Vue.js

暴力入门与组件开发

MVVM

感觉已经被掏空

10秒钟上手

{{前端模板}}
→双向绑定←
数据驱动$data
<!DOCTYPE html>
<html lang="en">
    <head>
      <title>Document</title>
    </head>

    <body>
      <div id="weibo" class="panel callout radius">
        <h1>{{ haha }}</h2>
      </div>
    
    <script src="../node_modules/vue/dist/vue.js"></script>
    <script>
      new Vue({
          el: "#weibo",
          data() {
            return {
              haha: 2333,
            };
          },
      })
    </script>
    </body>
</html>

主要概念

  • 构造器
  • 组件系统
  • 指令
  • 生命周期

构造器

new Vue({
    el: '<jQueryStyleSelector>',
    
    template: '<id || inline template>',
    
    data: {
        props: 'that are visible in templates',
        they: 'can be referenced from methods with this.propName'
        first_name: "John",
        last_name: "Doe"
    },

    computed: {
        full_name(){
            return this.first_name + this.last_name; //John Doe    
        }
    },  

    methods: {
        customMethodsAlso(){
            //here we have access to data, computed methods also
        }
    },
    // 生命周期钩子
    created: function(){},
    destroyed: function(){},

})

构造器常见选项

  • data
  • created
  • methods
  • computed
  • components
  • watch
  • props

组件系统

HTML
CSS
JS

<template></template>
<style></style>
<script></script>

m.weibo.cn v8
组件划分

CSS 选择器执行效率

1.id选择器(#myid)
2.类选择器(.myclassname)
3.标签选择器(div,h1,p)
4.相邻选择器(h1+p)
5.子选择器(ul < li)
6.后代选择器(li a)
7.通配符选择器(*)
8.属性选择器(a[rel="external"])
9.伪类选择器(a:hover, li:nth-child)

指令

Vue.directive('my-directive', {
  bind: function () {
    // 准备工作
    // 例如,添加事件处理器或只需要运行一次的高耗任务
  },
  update: function (newValue, oldValue) {
    // 值更新时的工作
    // 也会以初始值为参数调用一次
  },
  unbind: function () {
    // 清理工作
    // 例如,删除 bind() 添加的事件监听器
  }
})
<div v-my-directive="someValue"></div>

生命周期

v8目录结构

.
├── build/                      # webpack 配置文件
│   └── ...
├── config/                     
│   ├── index.js                # 项目配置文件
│   └── ...
├── src/
│   ├── main.js                 # 全局入口
│   ├── routers.js              # 路由配置
│   ├── views/                  # 路由入口文件
│   │   ├── Main.vue           # 首页feed
│   │   ├── Messages.vue       # “消息”
│   │   └── ...
│   ├── components/             # 组件们
│   │   └── ...
│   ├── filters/                # 全局过滤器
│   │   └── ...
│   └── assets/                 # 资源文件(会被 webpack 处理)
│       └── ...
├── static/                     # 纯静态资源 (不会被 webpack 处理,直接拷贝)
├── test/                       # 测试用例(暂无)
├── .babelrc                    # babel 配置
├── .editorconfig.js            # 编辑器风格配置
├── .eslintrc.js                # eslint 配置
├── index.html                  # 入口静态页模板
└── package.json                # npm 配置

Vue.js

By miccycn

Vue.js

  • 2,072