计算属性
computed:{}
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <div id="computed"> <div> <!-- dlrow olleh --> <!-- {{msg.split('').reverse().join('')}} --> {{reverseStr}} </div> <button @click='clickHanlder'>修改</button> </div> <script type="text/javascript" src="./vue.js"></script> <script type="text/javascript"> var com = new Vue({ el:"#computed", data:{ msg:"hello world" }, methods:{ clickHanlder(){ console.log(this.reverseStr); // get this.reverseStr = "Hello Luffy" // set } }, computed:{ // 默认只有 getter 方法 // 计算数据属性 watch 监听 // reverseStr(){ // return this.msg.split('').reverse().join('') // } reverseStr:{ set:function(newValue){ this.msg = newValue; }, get:function(){ return this.msg.split('').reverse().join('') } } } }) </script> </body> </html>
计算属性的应用 v-model
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <!-- preevent 可以阻止发送 form 表单,可以 ajax--> <form id='computed' @submit.prevent> <!-- <input type="text" v-model='msg'> --> <input type="text" v-model.lazy='msg'> <input type="number" v-model.number='msg'> <h3>{{msg}}</h3> <input type="submit" name="" value="提交"> <!-- v-model 实现原理- --> <!-- <input type="text" v-bind:value='getValue' @input='msgChange'> --> <!-- <h3>{{getValue}}</h3> --> <!-- 官网 https://cn.vuejs.org/v2/guide/forms.html --> </form> <script type="text/javascript" src="./vue.js"></script> <script type="text/javascript"> var com = new Vue({ el:"#computed", data:{ msg:"123" }, methods:{ msgChange(e){ console.log(e.target.value) this.getValue = e.target.value } // $.ajax() xmlhttpRequest axios 能做ajax技术 }, computed:{ getValue:{ set:function(newValue){ this.msg = newValue }, get:function(){ return this.msg } } } }) </script> </body> </html>
介绍
vue的核心:声明式的指令和数据的双向绑定。
那么声明式的指令,已经给大家介绍完了。接下来我们来研究一下什么是数据的双向绑定?
另外,大家一定要知道vue的设计模式:MVVM
M是Model的简写,V是View的简写,VM就是ViewModel。
通过官网的介绍,我们知道v-mode指令是v-bind:vlaue 和v-on:input的结合体。
----------------------------------------------------------
v-model
指令在表单 <input>
及 <textarea>
元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model
本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。
v-model只适用在表单控件中
比如:表单文本、多行文本、复选框、单选按钮、多选按钮、选择框。内容太多,就不给大家一一阐述了。大家一定要去阅读vue的官网文档
https://cn.vuejs.org/v2/guide/forms.html
ps:官网上的vue的文档非常好,喜欢vue的同学没事多来看看!
笔记
模块化
一个js就是一个模块
export default xxx
import xxx form ooo
-----------------
前端工具
webpack:打包机 html css js font 打包,之后交给服务器
html 文件太大;
webpack 有一些loader 加载器 插件
插件: 一个功能,一个js文件
组件: bootstrap,包含js html css ; 组件包含插件
webpack
可以对html压缩,
css压缩
js压缩 混淆;
减小服务器的压力,安全
图片压缩
前期:
grunt
gulp
-----------------
node.js 小型的服务器
node.js + webpack
(热重载)
npm run dev
实时监听 只要保存 就自动刷新了
-----------------
nodejs 服务器语言
npm init --yes 初始化我们的项目
自动的生成一个package.json文件
npm install jquery --save
npm install webpack --save-dev (开发依赖)
----------------
如果你拿到一个新的项目
cd 当前目录
// npm rebuild 重建一下 在 run install 出错的情况下;
npm install
npm run dev
npm start
npm run build
淘宝镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org
-----------------------
vue 框架 单页面
网易云页面
掘金
尽可能减少请求;减少服务器的压力;前端做性能 做优化,主要都是为了减少服务器的压力。
vue主要用来做单页面的,主要是做移动端的!做移动端优先,
一级路由 二级路由
/books/1
/publish/
-----------------------------
作业:
1. 上一页
2. 列表选中当前一项变色; 选项卡www.sina.com.cn
3. 代码敲一遍 知道每个指令干嘛的,熟练computed 计算属性的用法
4. v-model原理实现,
5. 预习;表单控件;