一、VS环境搭建 之前写过了,需要在VScode中安装如下插件:
Auto Close Tag Auto Rename Tag Chinese ESlint HTML CSS Support HTML Snippets JavaScript ES6 Live Server open in brower Vetur33 Vue 2Snippets 语法提示 谷歌浏览器中安装插件Vue Devtools
二、ES6特性 1、let作用域
let不会作用到{}外,var会越域跳到{}外
var可以多次声明同一变量,let会报错
var定义之前可以使用,let定义之前不可使用。(变量提升问题)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 <script> { var a = 1 ; let b = 2 ; } console .log (a); console .log (b); var m = 1 var m = 2 let n = 3 console .log (m) console .log (n) console .log (x); var x = 10 ; console .log (y); let y = 20 ; const a = 1 ; a = 3 ; </script>
2、解构表达式const🌟
支持let arr = [1,2,3]; let [a,b,c] = arr;这种语法
支持对象解析:const { name: abc, age, language } = person; 冒号代表属性重新改名,旧:新 其它不变,
字符串函数扩展
可以定义多行的字符串
占位符功能 ${}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 <script> let arr = [1 ,2 ,3 ]; let [a,b,c] = arr; console .log (a,b,c) const person = { name : "jack" , age : 21 , language : ['java' , 'js' , 'css' ] } const { name : abc, age, language } = person; console .log (abc, age, language) let str = "hello.vue" ; console .log (str.startsWith ("hello" )); console .log (str.endsWith (".vue" )); console .log (str.includes ("e" )); console .log (str.includes ("hello" )); let ss = `<div> <span>hello world<span> </div>` ; console .log (ss); function fun ( ) { return "这是一个函数" } let info = `我是${abc} ,今年${age + 10 } 了, 我想说: ${fun()} ` ; console .log (info); </script>
3、函数优化 支持函数形参默认值 function add2(a, b = 1) { 支持不定参数 function fun(…values) { 支持箭头函数 var print = obj => console.log(obj);箭头函数 +解构 var hello2 = ({name}) => console.log(“hello,” +name);,本来应该是person.name
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 <script> function add (a, b ) { b = b || 1 ; return a + b; } console .log (add (10 )); function add2 (a, b = 1 ) { return a + b; } console .log (add2 (20 )); function fun (...values ) { console .log (values.length ) } fun (1 , 2 ) fun (1 , 2 , 3 , 4 ) var print = obj => console .log (obj); print ("hello" ); var sum = function (a, b ) { c = a + b; return a + c; } var sum2 = (a, b ) => a + b; console .log (sum2 (11 , 12 )); var sum3 = (a, b ) => { c = a + b; return a + c; } console .log (sum3 (10 , 20 )) const person = { name : "jack" , age : 21 , language : ['java' , 'js' , 'css' ] } function hello (person ) { console .log ("hello," + person.name ) } var hello2 = ({name} ) => console .log ("hello," +name); hello2 (person); </script>
4、对象优化 可以获取map的键值对等Object.keys()、values、entries Object.assgn(target,source1,source2) 合并 如果属性名和属性值的变量名相同,可以省略const person2 = { age, name } 代表age属性的值是变量age的值 …代表取出该对象所有属性拷贝到当前对象。let someone = { …p1 }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 <script> const person = { name : "jack" , age : 21 , language : ['java' , 'js' , 'css' ] } console .log (Object .keys (person)); console .log (Object .values (person)); console .log (Object .entries (person)); const target = { a : 1 }; const source1 = { b : 2 }; const source2 = { c : 3 }; Object .assign (target, source1, source2); console .log (target); const age = 23 const name = "张三" const person1 = { age : age, name : name } const person2 = { age, name } console .log (person2); let person3 = { name : "jack" , eat : function (food ) { console .log (this .name + "在吃" + food); }, eat2 : food => console .log (person3.name + "在吃" + food), eat3 (food ) { console .log (this .name + "在吃" + food); } } person3.eat ("香蕉" ); person3.eat2 ("苹果" ) person3.eat3 ("橘子" ); let p1 = { name : "Amy" , age : 15 } let someone = { ...p1 } console .log (someone) let age1 = { age : 15 } let name1 = { name : "Amy" } let p2 = {name :"zhangsan" } p2 = { ...age1, ...name1 } console .log (p2) </script>
5、map和reduce map():接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回。reduce() 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,
1 2 3 4 5 6 7 8 9 arr = arr.map (item => item*2 ); arr.reduce (callback,[initialValue])
map处理,arr = arr.map(item=> item*2);
reduce。arr.reduce((原来的值,处理后的值即return的值)=>{
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <script> let arr = ['1' , '20' , '-5' , '3' ]; arr = arr.map (item => item*2 ); console .log (arr); let result = arr.reduce ((a,b )=> { console .log ("上一次处理后:" +a); console .log ("当前正在处理:" +b); return a + b; },100 ); console .log (result) </script>
6、promise优化异步操作封装ajax 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 <script> function get (url, data ) { return new Promise ((resolve, reject ) => { $.ajax ({ url : url, data : data, success : function (data ) { resolve (data); }, error : function (err ) { reject (err) } }) }); } get ("mock/user.json" ) .then ((data ) => { console .log ("用户查询成功~~~:" , data) return get (`mock/user_corse_${data.id} .json` ); }) .then ((data ) => { console .log ("课程查询成功~~~:" , data) return get (`mock/corse_score_${data.id} .json` ); }) .then ((data )=> { console .log ("课程成绩查询成功~~~:" , data) }) .catch ((err )=> { console .log ("出现异常" ,err) }); </script>
7、模块化import/export user.js
1 2 3 4 5 6 7 var name = "jack" var age = 21 function add (a,b ){ return a + b; } export {name,age,add}
Hello.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 export default { sum (a, b ) { return a + b; } }
Main.js
1 2 3 4 5 6 import abc from "./hello.js" import {name,add} from "./user.js" abc.sum (1 ,2 ); console .log (name);add (1 ,3 );
三、Vue MVVM思想
M:model 包括数据和一些基本操作 V:view 视图,页面渲染结果 VM:View-model,模型与视图间的双向操作(无需开发人员干涉) 视图和数据通过VM绑定起来,model里有变化会自动地通过Directives填写到视view中,视图表单中添加了内容也会自动地通过DOM Listeners保存到模型中。