一开始的需求是这样子的,我为了实现两个页面组件之间的数据传递,假设我有页面A,点击页面A上的某一个按钮之后,页面会自动跳转到页面B,同时我希望将页面A上的某一些参数携带过去给页面B。
==总结: 所以,如果想要用bus 来进行页面组件之间的数据传递,需要注意亮点,组件A$emit事件应在beforeDestory生命周期内。其次,组件B内的$on记得要销毁。==
一开始的需求是这样子的,我为了实现两个页面组件之间的数据传递,假设我有页面A,点击页面A上的某一个按钮之后,页面会自动跳转到页面B,同时我希望将页面A上的某一些参数携带过去给页面B。
==总结: 所以,如果想要用bus 来进行页面组件之间的数据传递,需要注意亮点,组件A$emit事件应在beforeDestory生命周期内。其次,组件B内的$on记得要销毁。==
(1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。
(2)主线程之外,还存在一个”任务队列”(task queue)。只要异步任务有了运行结果,就在”任务队列”之中放置一个事件。
(3)一旦”执行栈”中的所有同步任务执行完毕,系统就会读取”任务队列”,看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。
(4)主线程不断重复上面的第三步。
打开travis-ci主页,选择右上角的 Sign in with Github
, 使用你的 Github账号登录,进入你的accounts页面:
选择你要使用travis-ci构建的Github repository, 这里我开启的是: Java-http.github.io
点击进入setting
,点击右下角的More options
, 做一些设置,如:只有存在.travis.yml文件时才会触发自动build。
travis-ci自动build依赖于.travis.yml文件,文件会配置你的语言环境,版本,branch信息,环境变量,以及before_install, install, script,after_success 之类的hook.
这里我先列出我的travis.yml文件内容,然后坐进一步介绍:
1 | language: node_js |
REPO_TOKEN 需要github生成一个Personal access tokens,访问: https://github.com/settings/tokens/new , 选择权限
勾选repo,然后将会生成一个token.
ios上只有用户交互触发的focus事件才会起效,而延时回调的focus是不会触发的,说得大佬粗点,你想在ios上focus事件起效就不能讲focus时间放在延时里面调用
所遇问题:
html:ng-model=“test”,
但是在controller里打印的$scope属性里面并未发现test,控制台打印test为undefined,页面上却可以正常输出来。
原因:
scope不一样?
解决方法:
在html里添加$parent
1 | ng-model="$parent.test" |
1 | const defaultOpt = { |
很明显其实它直接覆盖了整个title,而不是覆盖subtext
1 | const defaultOpt = { |
上面结果发现两个配置变得一模一样,而其实我们并没有去更改opt1 的subtext ,只是改了opt2 的。
这说明一点:在title 这一层只是简单的浅拷贝 ,而没有继续深入的深拷贝。
Object.assign() 只是一级属性复制,比浅拷贝多深拷贝了一层而已。
发现一个可以简单实现深拷贝的方法,当然,有一定限制,如下:
1 | const obj1 = JSON.parse(JSON.stringify(obj)); |
思路就是将一个对象转成json字符串,然后又将字符串转回对象。
1 | extend(dest,src1,src2,src3...); |
它的含义是将src1,src2,src3…合并到dest中,返回值为合并后的dest,由此可以看出该方法合并后,是修改了dest的结构的。如果想要得到合并的结果却又不想修改dest的结构,可以如下使用:
1 | var newSrc=$.extend({},src1,src2,src3...)//也就是将"{}"作为dest参数。 |
这样就可以将src1,src2,src3…进行合并,然后将合并结果返回给newSrc了。如下例:
1 | var result=$.extend({},{name:"Tom",age:21},{name:"Jerry",sex:"Boy"}) |
那么合并后的结果
1 | result={name:"Jerry",age:21,sex:"Boy"} |
也就是说后面的参数如果和前面的参数存在相同的名称,那么后面的会覆盖前面的参数值。
上述的extend方法原型中的dest参数是可以省略的,如果省略了,则该方法就只能有一个src参数,而且是将该src合并到调用extend方法的对象中去,如:
1、$.extend(src)
该方法就是将src合并到jquery的全局对象中去,如:
1 | $.extend({ |
就是将hello方法合并到jquery的全局对象中。
2、$.fn.extend(src)
==该方法将src合并到jquery的实例对象中去==,如:
1 | $.fn.extend({ |
==就是将hello方法合并到jquery的实例对象中。==
下面例举几个常用的扩展实例:
1 | $.extend({net:{}}); |
这是在jquery全局对象中扩展一个net命名空间。
1 | $.extend($.net,{ |
这是将hello方法扩展到之前扩展的Jquery的net命名空间中去。
1 | extend(boolean,dest,src1,src2,src3...) |
==第一个参数boolean代表是否进行深度拷贝,其余参数和前面介绍的一致==
SCSS 是 Sass 的新语法格式,从外形上来判断他和 CSS 长得几乎是一模一样,代码都包裹在一对大括号里,并且==末尾结束处都有一个分号==。其文件名格式常常以“.scss”为扩展名。
1.嵌套输出方式 nested
2.展开输出方式 expanded
3.紧凑输出方式 compact
4.压缩输出方式 compressed
Sass 的变量包括三个部分:
1.声明变量的符号“$”
2.变量名称
3.赋予变量的值
定义之后可以在全局范围内使用。
1 | $fontSize: 12px; |
编译后的css代码:
1 | body{ |
sass 的默认变量仅需要在值后面加上 !default 即可。
1 | $baseLineHeight:1.5 !default; |
编译后的css代码:
1 | body{ |
sass 的默认变量一般是用来设置默认值,然后根据需求来覆盖的,覆盖的方式也很简单,只需要在默认变量==之前==重新声明下变量即可。
1 | $baseLineHeight: 2; |
编译后的css代码:
1 | body{ |
可以看出现在编译后的 line-height 为 2,而不是我们默认的 1.5。默认变量的价值在进行组件化开发的时候会非常有用。
1 | //SCSS |
css 的结果:
1 | //CSS |
只有满足所有下述标准时方可创建新变量:
1.该值至少重复出现了两次;
2.该值至少可能会被更新一次;
3.该值所有的表现都与变量有关(非巧合)。
msysgit是Windows版的Git,从 https://git-for-windows.github.io 下载(网速慢的同学请移步国内镜像),然后按默认选项安装即可。
安装完成后,还需要最后一步设置,在命令行输入:
1 | $ git config --global user.name "Your Name" |
初始化一个Git仓库,使用==git init==命令。
添加文件到Git仓库,分两步:
第一步,使用命令==git add
第二步,使用命令==git commit==,完成。