vue如何实现步骤操作
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于vue如何实现步骤操作内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在vue如何实现步骤操作相关知识领域提供全面立体的资料补充。同时还包含 vagrant、val、validationgroup 的知识内容,欢迎查阅!
vue如何实现步骤操作相关知识
-
JDBC的操作步骤JDBC的操作步骤一、什么是JDBCJDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。 其实,JDBC就是一套规范(接口),让各大服务器厂商自己去实现这个规范(实现接口),从而可以使得java编写的程序可以去访问。JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。二、常用的APIStatement接口:执行静态SQL语句并返回它所生成结果.int executeUpdate(String sql): 执行DDL/DML语句. 若当前SQL是DDL语句,则返回0. 若当前SQL是DML语句,则返回受影响的行数.ResultSet executeQuery(String sql):执行DQL语句,返回结果集.close():释放资源
-
vue-cli安装步骤详解前言四月份已经要悄悄过去了,从三月份辞职到进入新的公司,一切都显得特别的快,心情也是越发的静不下来,趁着今天心情特别轻松越快,感紧来写篇笔记先。随便说下,我的个人网站已经换了一套风格了,更加的适合阅读,有兴趣可以去看看啦~zhengyepan.com首先,做vue的项目,我们如果不用官方提供的脚手架,我们就必须自己去搭建项目所需的一切东西。这些项目所需要的目录结构啊 ,等等,感觉有点重复并且做项目的时候老是自己搭建未免太无趣。脚手架是指通过输入简单指令帮助你快速搭建好一个基本环境的工具。vue官方提供了vue-cli脚手架。下面我把我搭建的步骤和所需要注意的点列出来,做一个参考,如果你觉得对你有帮助,请一定不要节省你的赞~.步骤一、安装vue-cli,配置vue命令环境如果你还没有安装nodejs的话,请先安装nodejs全局安装vue-clinpm install vue-cli -g当然了,我们是在国内,npm安装的速度和下载的时候可能会出问题,所以我现在用cn
-
LNMP之PHP安装操作步骤=======> LNMP 之 PHP安装操作步骤 <==================1、==>备份默认源==>下载mirrors.163.com源==>yum安装epel源wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repoyum install epel-release -y ====>查看依赖库rpm -aq pcre pcre-devel openssl openssl-devel zlib-devel \libxml2-devel libjpeg-turbo-devel libpng-devel libcurl-devel libxslt-devel \freetype-devel gd-devel mhash mhash-devel mcrypt libmcrypt-develyum install pcre pc
-
如果安装Vue DevTools调试浏览器时出现已停用不支持的扩展程序情况请按照以下步骤操作如果安装Vue DevTools调试浏览器时出现已停用不支持的扩展程序情况请按照以下步骤操作 打开谷歌浏览器找到扩展程序 复制图片中的ID 打开访达(Finder),点击前往文件夹,输入地址~/Library/Application Support/Google/Chrome/Default/Extensions点击回车进入 在此文件夹中找到与刚才复制ID名称相同的文件夹 把文件夹拖拽到桌面或者任意位置,请记住这个位置 回到谷歌浏览器的扩展程序 点击图中加载已解压的扩展程序按钮 选择刚才拖拽到任意位置的文件,示例:桌面 点击选择问题解决
vue如何实现步骤操作相关课程
vue如何实现步骤操作相关教程
- 2. 实现步骤 步骤 1:通过 zmail 模块实现邮件发送#导入zmail模块import zmail#构建邮件内容mail = { 'subject': '这是一封定时邮件!', 'content_text': '测试内容!'}server = zmail.server('xxxx@qq.com', 'xlogucqphohxcabi')#发送邮件server.send_mail("xxxx@163.com", mail)代码解释:首先通过 zmail 实现一封普通邮件的发送,这里的代码同前面小节中发送邮件代码一致。由于在 Windows 计划中仅支持运行 bat 或 exe 程序,所以在当前 Python 文件同目录下,创建 index.bat 文件,执行发送邮件的 Python 文件(index.py)内容如下:python index.py步骤 2:配置 Window 计划任务启动 Windows 计划任务,在【控制面板】->【管理工具】->【任务计划程序】,启动后界面如下图所示。新建计划任务,如下图所示:设置计划任务触发器,每天执行一次,配置内容如下图所示:设置计划任务操作,即触发时执行什么操作,这里即触发后执行 index.bat,配置内容如下图所示:按照以上步骤配置完成后,打开接收邮件的邮箱,即可看到接收到发送过来的定时邮件。
- 2. 实现步骤 步骤 1:通过 zmail 实现最新邮件接收import zmail#获取最新邮件并打印邮件信息server = zmail.server('xxxxx@qq.com', 'mdgxgiwpnkspbxgx')mail = server.get_latest()zmail.show(mail)print(mail["id"])print(mail["from"])print(mail["to"])print(mail["subject"])print(mail["context_text"])print(mail["context_html"])代码解释:首先通过 zmail 实现最新一封邮件的接收,这里的代码同前面小节中接收邮件代码一致。步骤 2:新旧邮件比对想要提示用户有最新的邮件,就要把最后一封邮件的信息进行记录,在指定时间后,拿着两封邮件的信息进行比对,这里我们使用的邮件 ID(注意 ID 并不唯一,如要确保一定的准确,可以用 ID 结合邮件标题等多方面信息)记录邮件信息我们选择在这里放在了一个 txt 文件中,每次先读取再写入old_mailid = open('id.txt', 'r').readline()# 写入新邮件IDwith open('id.txt', mode='w+', encoding='utf-8') as f: f.write(str(mail_id))步骤 3:实现 window 弹窗提示像这种操作早有前人已经替我们完成了,这种库有很多,本小节采用的是 pymsgbox, 使用前注意通过 pip install pymsgbox 进行安装先了解下 pymsgbox 弹窗的多种形式pymsgbox.alert(text='', title='', button='OK')pymsgbox.confirm(text='', title='', buttons=['OK', 'Cancel'])pymsgbox.prompt(text='', title='' , default='')pymsgbox.password(text='', title='', default='', mask='*')效果依次如下图所示。显然我们这里用不到太复杂的弹窗,只要一个 alert 就阔以了,代码如下所示:#判断邮件是否是最新if old_mailid != str(mail_id): pymsgbox.alert("你有一封新邮件!") # 弹窗提示有新邮件步骤 4:配置 Window 计划任务前面都完成之后,执行 python 文件已经可以提示最新邮件了,现在遇到的问题就是如果自动化起来,这里通过配置 Window 计划任务的方式来实现。首先创建一个新任务,起个名字 autoemail,配置触发器,每 1 分钟执行一次,在操作这里,要执行的内容是什么呢,显然 Window 并不能直接执行 python,这里创建一个 .bat 文件,在文件中执行 Python 文件,在计划任务这里指定. bat 文件即可现在自己手动给邮箱发一封邮件之后,等待 1 分钟后,就可以看到 pymsgbox 的弹窗提示了,现在就可以去邮箱里面去查收邮件了,或者也可以直接把邮件内容一起显示出来,这个可以根据需求来修改代码就可以了。
- 3.1 算法步骤 步骤 1:比较待排序序列中相邻的两个元素,如果发现左边的元素比右边的元素大,则交换这两个元素;步骤 2:每一对相邻的两个元素重复步骤 1 的动作,从左至右依次执行;步骤 3:针对待排序序列中除了最右边的一个元素之外,重复步骤 1, 步骤 2 的工作;步骤 4:持续以上步骤 1, 步骤 2, 步骤 3 的工作,每重复一次需要排序的序列中少一个最右边的元素,直到没有任何一对数字需要比较排序。其实,上面的步骤 2 每执行一次,都有一个排序好的数字放到需要排序的序列的最右边,这样一直重复,可以完成最开始的整个待排序序列的排序工作。接下来,让我们用上面的待排序数字队列 [9,2,11,7,12,5] 进行整个算法步骤的排序演示工作。
- 1.2 使用步骤 步骤 1:导入 zipfile 模块import zipfile步骤 2:实例化 zipfile 对象z = zipfile.ZipFile(file, mode='r')打开或者新建一个 zip 文件对象,第一个参数为 file 文件地址,第二个参数为打开模式,当模式参数是 ‘r’ 表示读取现有的文件,为 ‘w’ 表示覆盖或写入一个新的文件,为 ‘a’ 表示将追加到现有文件。步骤 3:进行压缩文件操作通过 zipfile 模块提供的方法对压缩文件进行创建、读取、解压等操作。步骤 4:关闭压缩文件z = zipfile.ZipFile(file, mode='r')...省略部分代码z.close()注意:zipfile 在使用后,必须在退出程序之前调用 close () 方法否则将不会写入关键记录数据。
- 1.2 使用步骤 步骤 1:导入 xlrd 模块通过 import xlrd 完成导入。import xlrd步骤 2:加载 Excel 文件import xlrddata = xlrd.open_workbook("data.xlsx")open_workboox () 方法返回当前工作簿的一个实例,后续的操作都是通过这个实例进行。步骤 3:读取数据拿到 Excel 的实例后,即可通过 xlrd 模块提供的方法进行数据的读取。
- 2. 实现步骤 上一节我们已经知道了 Promise 是一个类,默认接收一个参数 executor(执行器),并且会立即执行。所以首先需要创建一个 Promise 的类,然后传入一个回调函数并执行它,故有如下的初始代码:class Promise { constructor(executor) { executor(); }}Promise 有三个状态:等待(padding)、成功(fulfilled),失败(rejected)。默认是等待状态,等待态可以突变为成功态或失败态,所以我们可以定义三个常量来存放这三个状态const PENDING = 'PENDING';const RESOLVED = 'RESOLVED'; // 成功态const REJECTED = 'REJECTED'; // 失败态class Promise { constructor(executor) { this.status = PENDING; // 默认是等待态 executor(); }}这样我们就知道了 Promise 的基本状态,那内部的状态是怎么突变为成功或失败的呢?这里执行器(executor)会提供两个个方法用于改变 Promise 的状态,所以我们需要在初始化时定义 resolve 和 reject 方法:在成功的时候会传入成功的值,在失败的时候会传入失败的原因。并且每个Promise 都会提供 then方法用于链式调用。class Promise { constructor(executor) { this.status = PENDING; const resolve = (value) => {}; const reject = (reason) => {}; // 执行executor时,传入成功或失败的回调 executor(resolve, reject); } then(onfulfilled, onrejected) { }}这时我们就可以开始着手去更改 Promise的状态了,由于默认情况下 Promise 的状态只能从 pending 到 fulfilled 和 rejected 的转化。class Promise { constructor(executor) { this.status = PENDING; const resolve = (value) => { // 只有等待态时才能更改状态 if (this.status === PENDING) { this.status = RESOLVED; } }; const reject = (reason) => { if (this.status === PENDING) { this.status = REJECTED; } }; executor(resolve, reject); } ...}成功和失败都会返回对应的结果,所以我们需要定义成功的值和失败的原因两个全局变量,用于存放返回的结果。class Promise { constructor(executor) { this.status = PENDING; this.value = undefined; this.reason = undefined; const resolve = (value) => { // 只有等待态时才能更改状态 if (this.status === PENDING) { this.value = value; this.status = RESOLVED; } }; const reject = (reason) => { if (this.status === PENDING) { this.reason = reason; this.status = REJECTED; } }; executor(resolve, reject); } ...}这时我们就已经为执行器提供了两个回调函数了,如果在执行器执行时抛出异常时,我们需要使用 try…catch 来补货一下。由于是抛出异常,所以,需要调用 reject 方法来修改为失败的状态。try { executor(resolve, reject);} catch(e) { reject(e)}我们知道实例在调用 then 方法时会传入两个回调函数 onfulfilled, onrejected 去执行成功或失败的回调,所以根据状态会调用对应的函数来处理。then(onfulfilled, onrejected) { if (this.status === RESOLVED) { onfulfilled(this.value) } if (this.status === REJECTED) { onrejected(this.reason) }}这样我们就完了 Promise 最基本的同步功能,let promise = new Promise((resolve, reject) => { resolve('value'); // throw new Error('错误'); // reject('error reason') // setTimeout(() => { // resolve('value'); // }, 1000)})promise.then((data) => { console.log('resolve response', data);}, (err) => { console.log('reject response', err);})用上面的代码对我们写的 Promise 进行验证,通过测试用例可知,我们写的 Promise 只能在同步中运行,当我们使用 setTimeout 异步去返回时,并没有预想的在then的成功回调中打印结果。对于这种异步行为需要专门处理,如何处理异步的内容呢?我们知道在执行异步任务时 Promise 的状态并没有被改变,也就是并没有执行 resolve 或 reject 方法,但是 then 中的回调已经执行了,这时就需要增加当 Promise 还是等待态的逻辑,在等待态时把回调函数都存放起来,等到执行 resolve 或 reject 再依次执行之前存放的then的回调函数,也就是我们平时用到的发布订阅模式。实现步骤:首先,需要在初始化中增加存放成功的回调函数和存放失败的回调函数;然后,由于是异步执行 resolve 或 reject 所以需要在 then 方法中把回调函数存放起来;最后,当执行 resolve 或 reject 时取出存放的回调函数依次执行。根据以上的实现步骤可以得到如下的代码:class Promise { constructor(executor) { this.status = PENDING; this.value = undefined; // 成功的值 this.reason = undefined; // 失败的原因+ // 存放成功的回调函数+ this.onResolvedCallbacks = [];+ // 存放失败的回调函数+ this.onRejectedCallbacks = []; let resolve = (value) => { if (this.status === PENDING) { this.value = value; this.status = RESOLVED;+ // 异步时,存放在成功的回调函数依次执行+ this.onResolvedCallbacks.forEach(fn => fn()) } }; let reject = (reason) => { if (this.status === PENDING) { this.value = reason; this.status = REJECTED;+ // 异步时,存放在失败的回调函数依次执行+ this.onRejectedCallbacks.forEach(fn => fn()) } }; try { executor(resolve, reject); } catch(e) { reject(e) } } then(onfulfilled, onrejected) { if (this.status === RESOLVED) { onfulfilled(this.value) } if (this.status === REJECTED) { onrejected(this.reason) }+ if (this.status === PENDING) {+ this.onResolvedCallbacks.push(() => {+ // TODO+ onfulfilled(this.value);+ })+ this.onRejectedCallbacks.push(() => {+ // TODO+ onrejected(this.reason);+ })+ } }}上面的代码中,在存放回调函数时把 onfulfilled, onrejected 存放在一个函数中执行,这样的好处是可以在前面增加处理问题的逻辑。这样我们就完成了处理异步的 Promise 逻辑。下面是测试用例,可以正常的执行 then 的成功回调函数。let promise = new Promise((resolve, reject) => { setTimeout(() => { resolve('100'); }, 1000)})promise.then((data) => { console.log('resolve response:', data); // resolve response: 100}, (err) => { console.log('reject response:', err);})到这里我们是不是已经基本实现了 Promise 的功能呢?ES6 中的 then 方法支持链式调用,那我们写的可以吗?我们在看下面的一个测试用例:let promise = new Promise((resolve, reject) => { setTimeout(() => { resolve('100'); }, 1000)})promise.then((data) => { console.log('resolve response:', data); // resolve response: 100 return 200}, (err) => { console.log('reject response:', err);}).then((data) => { console.log('data2:', data)}, null)// TypeError: Cannot read property 'then' of undefined然而当我们在执行的时候会报错,then 是 undefined。为什么会这样呢?那我们要知道如何满足链式调用的规范,那就是在完成任务后再返回一个Promise 实例。那如何返回一个 Promise 实例呢?在 Promise A+ 规范的 2.2.7 小节在有详细的描述,再实例化一个 promise2 来存放执行后的结果,并返回 promise2。那么我们就要改造 then 方法了。class Promise { ... then(onfulfilled, onrejected) { let promise2 = new Promise((resolve, reject) => { if (this.status === RESOLVED) { const x = onfulfilled(this.value) resolve(x) } if (this.status === REJECTED) { const x = onrejected(this.reason); reject(x) } if (this.status === PENDING) { this.onResolvedCallbacks.push(() => { const x = onfulfilled(this.value) resolve(x) }) this.onRejectedCallbacks.push(() => { const x = onrejected(this.reason); reject(x) }) } }) return promise2 }}再使用上面的测试用例,就可以得到正确的结果:let promise = new Promise((resolve, reject) => { resolve('100');})promise.then((data) => { console.log('data1:', data); // data1: 100 return 200}, null).then((data) => { console.log('data2:', data); // data2: 200 throw new Error('error')}, null).then(null, () => { consol.log('程序报错...')})上面的测试用例中,当 then 的回调函数抛出异常时需要去捕获错误,传到下一个 then 的失败回调函数中。class Promise { ... then(onfulfilled, onrejected) { let promise2 = new Promise((resolve, reject) => { if (this.status === RESOLVED) { try{ const x = onfulfilled(this.value) resolve(x) } catch(e) { reject(e) } } if (this.status === REJECTED) { try{ const x = onrejected(this.reason); resolve(x) } catch(e) { reject(e) } } if (this.status === PENDING) { this.onResolvedCallbacks.push(() => { try{ const x = onfulfilled(this.value) resolve(x) } catch(e) { reject(e) } }) this.onRejectedCallbacks.push(() => { try{ const x = onrejected(this.reason); resolve(x) } catch(e) { reject(e) } }) } }) return promise2 }}到这里为止我们就已经实现了一个简版的 Promise,因为Promise是一个规范,很多人都可以实现自己的 Promise 所以 Promise A+ 规范做了很多兼容处理的要求,如果想实现一个完整的 Promise 可以参考 Promise A+ 规范 。
vue如何实现步骤操作相关搜索
-
vacuum
vagrant
val
validationgroup
validationsummary
vals
valueof
values
vant
variables
vb
vb if else
vb if语句
vb net
vb net 教程
vb net 数据库
vb net教程
vb net下载
vb 教程
vb 数组