微信小程序:
(1)什么是微信小程序:
小程序是由微信之父张小龙在2017年1月9日正式发布的“轻”应用,它不需要下载安装专门的APP,只需要通过微信的载体,就可以轻松实现APP的功能。并且它具有“即开即用,用完即走”的特点,不占内存,非常方便快捷。
(2)微信小程序用来做什么:
App自己做功能,基于微信做运营。更利于便民
(3)微信开发工具:
微信小程序有自己单独开发的编辑器,初学者可根据微信小程序开发文档去进行学习https://developers.weixin.qq.com/miniprogram/dev/quickstart/basic/getting-started.html
(4)微信开发文档组件:
微信小程序有自己的标签模式可根据需求在开放文档中使用基础组件进行自己要选需求
vue复习
(1)组件通讯:
1.父传子:创建两个组件A.vue和B.vue,并在A.vue中引入B.vue,并注册,然后在A.vue引入的子组件自身添加要传递的属性,最后在B.vue中使用props去接收
2.子传父:给子组件自定义一个元素然后用v-on去进行监听然后用在父组件用$emit去触发
3.vueX:是一个集中式状态管理工具,相当于react中的 redux 主要解决的问题:大中型项目中复杂组件通讯问题
应用场景有:单页应用中,组件之间的状态。音乐播放、登录状态、加入购物车等
应用级的状态集中放在store中
改变状态的方式是提交mutations
使用步骤:先安装vuex npm install vuex --save然后在scr里面创建store目录然后在里面创建index.js文件作为vuex入口文件最后在index.js里面先引入vuejs然后 定义state 用来存储数据状态
最后在用export 或者 export default 来曝光出去在main.js引入store文件如此就可以实现一个简单的vuex传值
(2)生命周期钩子:
created、beforeCreate、beforeMount、mounted、beforeUpdate、updated、activated、deactivated、beforeDestroy、destroyed、errorCaptured
(3)路由钩子函数:
beforEach路由跳转之前调用 afferEach 路由跳转成功之后调用
(4)自定义钩子函数:
vue.directiv()全局钩子 directives()
(5)mock.js:
在项目中用与如果后台没给数据的情况下可以现行自己模拟数据先用命令安装并引入框架中可根据https://blog.csdn.net/duola8789/article/details/79709144 快速理解并使用
(6)跨域:
跨域产生的原因:因为ajax有一个同源策略,但咱们调用的接口来自于第三方网站,那这里必须跨域
缺点:只支持IE10+
如何使用jsonp解决跨域问题
首先动态创建一个script标签然后在script标签src属性中写上一个接口地址然后用?拼接callback参数,callback里面是一个自定义函数然后传给后台,后台使用get接收callback函数,后台就开始整理数据最后将整理的json数据防御callback回调函数的参数中然后在前端的自定义函数中调用所返回的json数据这样就可以实现渲染
(7) 权限控制:
router.beforeEach
三个参数:
to:router即将进入的路由对象
from:当前导航即将离开的路由
next:Function,进行管道中的一个钩子,如果执行完了,则导航的状态就是 confirmed (确认的);否则为false,终止导航。
(8) 动态加载路由addRoutes:
基于Vue实现后台系统权限控制的一些逻辑出入如果有权限就动态添加这条路由给予相对应的权限所能查看的
动态路由还有一些在使用的坑如:第一个坑是,如果你将这套逻辑实现之后会发现打开应用看到的第一个页面是404,这是因为启动服务后将默认打开首页’/‘,然而初始路由中没有这个路径,因此根据路由规则跳转到了404。我们希望结果当然是跳转到’/login’,因此需要对这种情况做判断,在用户登录之前所有请求都要指向’/login’,这个判断可以在before钩子里做也可以在根组件里做,建议做在根组件的created回调里
具体可以根据https://blog.csdn.net/ma524654165/article/details/77851541
这个网站去进行学习去一步步操作
(9) 双向数据绑定原理:
是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。
(10)脏检查:
脏检查是基于angularjs1.0开发由于后台检测数据后期检测造成内存过大所以已经不适合开发.
为什么要使用脏检查:
- 脏检查完全不关心你改变数据的方式, 而常规的set, get的方式则会强加许多限制
- 脏检查可以实现批处理完数据之后,再去统一更新view.
- 脏检查其实比 GET/SET 更容易实现. 脏检查是个单向的检查流程(请不要和双向绑定发生混淆), 可以实现任意复杂度的表达式支持. 而get/set的方式则需要处理复杂依赖链 , 基本上表达式支持都是阉割的(使用时就像踩雷).
但是很显然, 脏检查是低效的, 它的效率基本上取决于你绑定的观察者数量, 在regularjs中, 你可以通过@(Expression)元素来控制你的观察者数量.
然而结合这种类mvvm系统中, 他又是高效的. 因为监听模式带来了dom的局部更新, 而dom操作恰恰又是隐藏的性能瓶颈所在.
(10) vue中的QS库:
安装命令 npm install qs -S
用途:在axios中利用qs包装data数据
用法:import QS from ‘qs’
QS.stringift(data)、 QS.parse(data)
(11) vue中md5:
MD5作为一种常见常用的加密算法,MD5算法是广泛使用的杂凑函数,也就是哈希函数,英文全拼是:Message Digest Algorithm,对应的中文名字是消息摘要算法,主流的编程语言基本上都已经有封装好的MD5加密算法可以使用
注意事项:抛去MD5的安全性不讲,由于MD5算法是公开的,所有人都可以获得和使用MD5算法,如果不对MD5算法进行一些处理,那么当我们将自己的重要接口暴露在互联网上的时候,比如登陆接口,攻击者就可以同样利用MD5加密算法对我们进行撞库攻击和关键信息比对。
如何决绝:我们可以给算法增加一个偏移量,比如在原始数据上拼接一段数据在进行加密;或者根据原始数据分布范围进行转换,用得到的新值进行MD5计算,这样子被破解的风险就会大大降低。
跟md5类似加密方法的还有RSA加密、sha256、base64使用方法跟md5基本相同
ES6
可根据
1.http://es6.ruanyifeng.com/#docs/function
2.https://www.cnblogs.com/Wayou/p/es6_new_features.html
资料查阅
(1)let,const
特点:
(1)没有变量提升
(2) 块级作用域
(3)不能重复定义
(2)箭头函数:
=>
匿名函数: function(item,index,arr) {
console.log(arr)
}
普通函数跟箭头函数有什么区别?
箭头函数没有自己的this,他的this是其父级函数的this
普通函数是有自己的this,他的this是在程序运行时确定的
用 =>来取代匿名函数 (形参1,形参2,.....) => {
//代码块
}
` call,apply,bind的理解
(3)结构赋值
(4)es6新增字符串数组对象方法
(6)promise:
是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。
(1)对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。
(2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。如果改变已经发生了,你再对Promise对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。
(3)有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise对象提供统一的接口,使得控制异步操作更加容易。
缺点:。首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。第三,当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
JQ复习
参考资料:jQ在线中文手册 http://jquery.cuishifeng.cn/
(1) 编译插件:
jq插件用起来很方便,给客户端的编程带来很大的好处,节省大量的开发时间
下面是一个例子:
jQuery(以下简称JQ)是一个功能强大而又小巧的JS框架,现在很多网站都在使用JQ,本站也不例外。本文教大家如何写一个属于你自己的JQ插件。
JQ插件标准的封装代码如下,首先需要闭包:
<script type="text/javascript">
(function ($) {
//这里放入插件代码
})(jQuery);
</script>
这是jQuery官方的插件开发规范,这样写是作用是:
1. 避免全局依赖。
2. 避免第三方破坏。
3. 兼容jQuery操作符’$'和’jQuery’
接着给插件加入主体