1. Vue事件
语法:使用v-on指令注册事件
<标签 v-on:事件句柄="表达式或者事件处理函数"></标签>
简写方式:<标签 @事件句柄="表达式或者事件处理函数"></标签>
1 <div id="app"> 2 {{num}} 3 <button v-on:click="num++">按钮1</button> 4 <button @click="num++">按钮2</button> 5 <button @click="add">按钮3</button> 6 <button @click="say('nice')">按钮4</button> 7 </div>
1 <script> 2 new Vue({ 3 el:"#app", 4 data:{ 5 num:0 6 }, 7 methods:{ 8 add(){ 9 this.num++; 10 }, 11 say(msg){ 12 console.log("放假真好!" + msg); 13 } 14 } 15 }); 16 </script>
2. 计算属性
computed:计算一些复杂的表达式
1 <body> 2 <div id="app"> 3 {{birth}} 4 </div> 5 <script> 6 new Vue({ 7 el:"#app", 8 data:{ 9 birthday:1529032123201 10 }, 11 computed:{ 12 birth(){ 13 return new Date(this.birthday).getFullYear() + "-" + new Date(this.birthday).getMonth() 14 + "-" + new Date(this.birthday).getDay(); 15 } 16 } 17 }); 18 </script> 19 </body>
3. watch监听值的变化
1 <body> 2 <div id="app"> 3 <input type="text" v-model="msg"> 4 </div> 5 <script> 6 new Vue({ 7 el:"#app", 8 data:{ 9 msg:"" 10 }, 11 watch:{ 12 //可以起监听的效果 13 msg(newVal,oldVal){ 14 console.log("老值:" + oldVal); 15 console.log("新值:" + newVal); 16 } 17 } 18 }); 19 </script> 20 </body>
4. 组件
4.1 什么是组件
组件是用来完成特定功能的一个自定义的HTML标签。
4.2 作用
组件是对特定功能代码(html、css、js)的封装,通过组件的名字可以重复利用该组件中的代码。
4.3 组件的分类
组件分为全局组件和局部组件。
全局组件:在所有vue实例中(在它所挂载元素下面有效)有效。
局部组件:在自己vue实例中(在它所挂载元素下面有效)有效。
4.3.1 全局组件
语法:
Vue.component("自定义标签的名字",{配置对象 })
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 <script src="node_modules/vue/dist/vue.js"></script> 7 </head> 8 <body> 9 <div id="app"> 10 <mycomponent1></mycomponent1> 11 <mycomponent2></mycomponent2> 12 </div> 13 <hr> 14 <div id="app1"> 15 <mycomponent1></mycomponent1> 16 <mycomponent2></mycomponent2> 17 </div> 18 <script> 19 Vue.component("mycomponent1",{ 20 template:"<h1>今天天气真好!</h1>" 21 }); 22 var templateConfig = { 23 template:"<h1>适合出去运动!</h1>" 24 }; 25 Vue.component("mycomponent2",templateConfig); 26 new Vue({ 27 el:"#app", 28 data:{} 29 }); 30 new Vue({ 31 el:"#app1", 32 data:{} 33 }) 34 </script> 35 </body> 36 </html>
4.3.2 局部组件
特点:局部组件只能够在所挂载的标签中使用
1 <div id="app"> 2 <mycomponent1></mycomponent1> 3 </div> 4 <hr> 5 <div id="app1"> 6 <mycomponent1></mycomponent1> <!-- 不能使用 --> 7 </div> 8 <script> 9 new Vue({ 10 el:"#app", 11 data:{}, 12 components:{ 13 "mycomponent1":{ 14 template:"<h1>今天天气真好!</h1>" 15 } 16 } 17 }); 18 new Vue({ 19 el:"#app1", 20 data:{} 21 }) 22 </script>
4.4.4 组件使用两种html模板
1 <body> 2 <div id="app"> 3 <mycomponent1></mycomponent1> 4 </div> 5 <!--<template id="mytemplate"> 6 <h1>template标签中的html!</h1> 7 </template>--> 8 <script type="text/tempalte" id="mytemplate"> 9 <h1>script标签中的html!</h1> 10 </script> 11 <script> 12 new Vue({ 13 el:"#app", 14 data:{}, 15 components:{ 16 "mycomponent1":{ 17 //(1)直接在组件写个template这个模块 18 // template:"<h1>直接写在template模块中的哦</h1>" 19 //(2)定义template标签,再引用 20 //template:"#mytemplate" 21 //(3)定义在script标签中,再引用 22 template:"#mytemplate" 23 } 24 } 25 }); 26 </script> 27 </body>
4.4.5 组件中的数据必须是函数
1 <body> 2 <div id="app"> 3 <mycomponent1></mycomponent1> 4 </div> 5 <!-- 模板里面的内容 必须包含在一个根元素里面--> 6 <template id="mytemplate"> 7 <div> 8 <form> 9 {{name1}}<input type="text" name="username"> 10 </form> 11 </div> 12 </template> 13 <!-- 14 (1)如果要使用模板里面的数据,必须是函数的形式 15 (2)模板里面如果有多个标签,必须包含在一个根标签里面 16 --> 17 <script> 18 var templateConfig = { 19 template:"#mytemplate", 20 data(){ 21 return {name1:"用户名"}; 22 } 23 }; 24 Vue.component("mycomponent1",templateConfig); 25 new Vue({ 26 el:"#app", 27 data:{} 28 }); 29 </script> 30 </body>
注意事项:
- data数据只能够以函数的形式返回,因为函数中可以写其他的业务代码。
- 只能够在各自的组件模板中使用各自的组件中的data数据。
- Vue对象中的数据不能够在组件中使用,组件的数据也不能够在挂载的html标签上使用。
5. 路由
5.1 什么叫路由
路由是负责将进入的浏览器请求映射到特定的组件代码中。即决定了由谁(组件)去响应客户端请求。简单说路由就是url地址和对应的资源的映射,通过一个路径的url地址,可以唯一找到一个资源。路由是一个插件,需要单独下载。
官方地址:https://router.vuejs.org/zh/
地址:https://unpkg.com/vue-router@3.0.1/dist/vue-router.js
5.2 路由的使用
(1) 先安装
npm install vue-router
(2) 引入js
<script src="node_modules/vue/dist/vue.js"></script>
<script src="node_modules/vue-router/dist/vue-router.js"></script>
(3) js代码
1 <script> 2 //先准备组件 3 var index = Vue.component("index",{ 4 template:"<h1>首页</h1>" 5 }); 6 var product = Vue.component("product",{ 7 template:"<h1>产品介绍</h1>" 8 }); 9 var about = Vue.component("about",{ 10 template:"<h1>关于我们</h1>" 11 }); 12 var router = new VueRouter({ 13 routes:[{ 14 path:"/",//路由地址 15 component:index//路由对应的资源 16 },{ 17 path:"/product", 18 component:product 19 },{ 20 path:"/about", 21 component:about 22 }] 23 }); 24 //把路由挂载到标签上面 25 new Vue({ 26 el:"#app", 27 data:{}, 28 router:router 29 }); 30 </script>
(4) 在html中使用
1 <div id="app"> 2 <router-link to="/">首页</router-link> 3 <router-link to="/product">产品介绍</router-link> 4 <router-link to="/about">关于我们</router-link> 5 <hr> 6 <!--渲染模板,渲染组件--> 7 <router-view></router-view> 8 </div>
6. webpack的使用
6.1 什么是webpack?
把所有的项目资源打包成一些比较小的资源。
6.2 为什么需要打包?
(1) 减少页面对于资源的请求,提高效率。
(2) 可以降低版本,ES6-->ES5 为了兼容浏览器。
(3) 将代码打包的同时进行混淆,提高代码的安全性
6.3 js导包用法
(1) 安装
npm install -g webpack
npm install -g webpack-cli
(2) 创建一些代码
a.js
var b = require("./b.js"); require("../css/index.css"); console.log(b);
b.js
define(function () { var b = "b模块"; return b; });
(3) 运行打包的命令
webpack src/a.js -o dist/bundle.js
(4) 创建一个html页面 ,引入bundle.js文件
6.4 打包配置文件方式
在项目的根路径下面创建一个文件:
webpack.config.js
1 var path = require("path"); 2 module.exports = { 3 entry: './src/a.js', 4 output: { 5 path: path.resolve(__dirname, './dist'), 6 filename: 'bundle.js' 7 } 8 }
运行:webpack
6.5 css打包用法
(1) 下载安装css加载器
css-loader style-loader
npm install style-loader --save-dev
npm install css-loader --save-dev
(2) 配置webpack.config.js
1 const path = require('path'); 2 //配置入口和出口 3 module.exports = { 4 entry: './src/a.js',//入口文件 5 output: { //出口 6 path: path.resolve(__dirname, 'dist'), 7 filename: 'bundle.js' 8 },module: { 9 rules: [ 10 { 11 test: /.css$/, //匹配文件规则 12 use: ['style-loader', 'css-loader'] //匹配后使用什么加载器进行模块加载 13 // webpack use的配置,是从右到左进行加载的 14 } 15 ] 16 } 17 };
(3) 在js文件里面引入css
1 var a ='aaa'; 2 var b =require('./b.js'); 3 require('../css/index.css') 4 console.log(b);
(4) 在终端terminal运行webpack,生成一个bundle.js的文件
(5) 在HTML页面引入bundle.js文件
7. 前端项目放到服务器运行
(1) 安装
npm install webpack-dev-server --save-dev
npm install webpack --save-dev
(2) 在package.json中配置script
"scripts": { "dev": "webpack-dev-server --inline --progress --config ./webpack.config.js" }
(3) package.json版本
1 "devDependencies": { 2 "css-loader": "^3.2.0", 3 "style-loader": "^1.0.1", 4 "webpack": "^3.10.0", 5 "webpack-dev-server": "^2.9.7" 6 }
(4) 在终端运行 npm run dev
(5) 访问默认端口是:localhost:8080
8. 脚手架搭建
(1) npm install -g @vue/cli
(2) vue create hello-world
(3) 选中VueProject(第二个)
(4) cd hello-world
yarn serve 运行
yarn build 编译(额外生成一些文件)
(5) npm run serve 运行