2017.08.29

New

  • 事件绑定DOM事件处理
var vm = new Vue({
    el: 'root',
    data: {

    },
    methods: {
        doSomeThing: function() {

        },
        doAnotherThing: function() {

        }
    }
});

声明 Vue 实例方法时,Vue.js 会将方法绑定到 Vue 实例上,而 ES6 的箭头函数不支持 this 绑定,因此不能使用 ES6 的箭头函数声明 Vue 实例方法。

在后面学习的 watcher 回调函数也被绑定到 Vue 实例上,因此也不能使用 ES6 的箭头函数声明 watcher 回调函数。

  • watch 的使用

对于由一个数据变化引发多个数据、状态变化的情况,我们推荐使用 watcher;数据变化触发组件间或前后端交互的情况,使用 watcher 也更简明。

关于 watcher 的应用场合,试举例如下:

某元素通过 v-show 显示后延时隐藏,可以观察 v-show 所绑定的数据,当数据为真时,启动定时器延时重新设置 v-show 所绑定的数据隐藏元素; 日历控件中,日期数值发生变化,获取年、月,计算并重绘日历面板; 分页控件用户点击页码触发 pageIndex 数据变化,观察到 pageIndex 变化时触发向后端发起 AJAX 请求,获取该页码中的数据记录,并在获取数据记录后更新分页控件中的页码及状态; 用户输入地址,数据变化触发向高德地图发起 AJAX 请求,获取相类似的地址列表并实现 auto-complete; ……

由于 watcher 通过函数回调响应数据变化,而在回调函数中还有可能触发其他数据变化引发其他 watcher 回调,因此需要避免滥用造成回调结构过于复杂,影响性能。

在设置 watch 选项属性时,若其键值为对象,可以通过 deep 属性指定是否实现深度观察,注意观察数组的变动不需要设置 deep 属性。

通过下面 watcher 设置的代码可以验证,当进行深度观察时,若只是修改对象属性的值,则回调函数的两个参数 val 和 oldVal 指向同一个对象,因此无法通过 oldVal 找回修改之前的对象副本。数组异动方法或 Vue 实例的 $set、$remove 方法导致的数组数据变化,其观察回调的情形与此类似。

user: {
  handler: function(val, oldVal) {
    console.log(val === oldVal);
  },
  deep: true
}

开发中常用到的单位和取值

  1. 长度值单位

rem:相对长度单位。相对于根元素(即html元素) font-size 值的倍数。 vw:相对于视口的宽度。视口被均分为100单位的vw,例如:

h1 {
  font-size: 8vw;
}
/*
  如果视口的宽度是200mm,那么上述代码中h1元素的字号将为16mm,即(8x200)/100。
*/

vh:相对于视口的高度。视口被均分为100单位的vh(示例如上)。 vmax:相对于视口的宽度或高度中较大的那个。其中最大的那个被均分为100单位的vmax,例如:

h1 {
  font-size: 8vmax;
}
/*
如果视口的宽度是300mm,高度是200mm,那么上述代码中h1元素的字号将为24mm,即(8x300)/100,因为宽度比高度要大,所以计算的时候相对于宽度。
*/

vmin:相对于视口的宽度或高度中较小的那个。其中最小的那个被均分为100单位的vmin(示例如上)。

  1. 角度值单位

deg:度(Degress)。一个圆共360度。

90deg = 100grad = 0.25turn ≈ 1.570796326794897rad
  1. 时间值单位

s:秒。 ms:毫秒。

  1. 颜色值

RGBA:RGBA(R,G,B,A),取值如下: R:红色值。正整数 | 百分数 G:绿色值。正整数 | 百分数 B:蓝色值。正整数 | 百分数 A:Alpha透明度。取值0~1之间

  1. 图像值(渐变值)

      linear-gradient()
    
    • 语法:

      <linear-gradient> = linear-gradient([ [ <angle> | to <side-or-corner> ] ,]? <color-stop>[, <color-stop>]+)
      
      <side-or-corner> = [left | right] || [top | bottom]
      <color-stop> = <color> [ <length> | <percentage> ]?
      
    • 取值: 下述值用来表示渐变的方向,可以使用角度或者关键字来设置:

      <angle>:用角度值指定渐变的方向(或角度)。
      
        to left:设置渐变从右到左。相当于: 270deg。
        to right:设置渐变从左到右。相当于: 90deg。
        to top:设置渐变从下到上。相当于: 0deg。
        to bottom:设置渐变从上到下。相当于: 180deg。这是默认值,等同于留空不写。
      
      <color-stop>:用于指定渐变的起止颜色。
      <color>:指定颜色。
      <length>:用长度值指定起止色位置。不允许负值。
      <percentage>:用百分比指定起止色位置。
      

create time: 2017.08.29 13:00

Typescript Handlerbook 中文版 —— gulp 构建使用章节 demo 项目

如何使用 gulp 来搭建 typescript 的开发环境

npm i -g gulp
mkdir proj proj/dist proj/src
cd proj
npm init (main: './dist/main.ts')
yarn add typescript gulp gulp-typescript --dev
  • gulpfile.js ```js // 导入构建工具包 gulp var gulp = require('gulp'); // 导入 typescript 的 gulp 工具包的工程插件 var ts = require('gulp-typesript'); // 通过 ts 工程插件的 createProject 方法,传入 ts 的工程配置文件 来创建 ts 工程 var tsProject = ts.createProject('tsconfig.json');

gulp.task('default', function() { return tsProject.src() .pipe(tsProject()) .js.pipe(gulp.dest('dist')); });


- tsconfig.json 

```json
{
    // 要编译的文件列表
    "files": [
        "src/main.ts",
        "src/greet.ts"
    ],
    // 编译定制选项
    "compileOptions": {
        "noImplicitAny": true,
        "target": "es5"
    }
}

run

yarn
gulp
node ./dist/main.js

自我实现栅格布局(三列): 视口单位运用

重点是 每列宽度的组合 总宽度要等于 100%,由于采用浮动布局,所以总宽度只可以小于100%, 不可以大于100%。

html, body, p, ul, table {
    margin: 0;
    padding: 0
}
.wrapper {
    margin-bottom: 2vh;
}
.container {
    padding: 0 6vw;
}
.col-1, .col-2, .col-3 {
    float: left;
    box-sizing: border-box;
    margin-left: 0.333%;  /* 3 , 1+2, 1+1+1 */
    min-height: 20vh;
    padding: 2vw;
    background: rgba(255,0,0,.4);
}
.col-1 {
    width: 33%;
    /* 33 + 33 + 33 + 0.333 * 3 */
    /* 33 + 66 + 0.333 * 2 */
}
.col-2 {
    width: 66.66%;
}
.col-3 {
    width: 99.7%;
}

create time 21:00

CSS3 动画(变形、过渡、动画)

  • tip: 鼠标悬浮到父元素子元素发生样式变化的写法
.box:hover .box_item { /* ...*/ }
  • tip: 鼠标悬浮到父元素伪元素发生样式变化的写法
.box:hover:after { /* ... */ }

results matching ""

    No results matching ""