1、准备工作
安装vscode
下载相关的插件
1、创建空文件夹
2、vscode打开创建的空文件夹
3、将工作去另存为即可
2、es6
es6是一套标准,一套规范
JavaScript很好地遵循了这套规范
1、let定义变量及其作用域
<script>//es6定义变量,及变量的作用域//js定义变量 var a=10 没有作用范围//es6定义变量 let a=10,其定义有作用范围{var a=10let b=20}console.log(a)console.log(b) //b is not defined</script>
2、let不能重复定义相同的变量名
<script>var a=10var a=20let b=10let b=20console.log(a)console.log(b) //Identifier 'b' has already</script>
3、const定义常量
<script>//常量定义后不可再次赋值,常量定义必须初始化const PI=3.14//PI=2//const A</script>
4、数组解构
<script>//传统写法let a=1,b=2,c=3console.log(a,b,c)//es6写法let [x,y,z]=[10,20,30]console.log(x,y,z)</script>
5、对象解构
<script>//定义对象let user={"name":"lucy","age":20}//传统写法let name1=user.namelet age1=user.ageconsole.log(name1+"==="+age1)//es6写法,大括号的属性名必须与对象属性名一致let {name,age}=userconsole.log(name+"***"+age)</script>
6、模板字符串反引号`
1、实现换行
2、实现获取变量值
3、实现调用方法
<script>//1、实现换行let str=`hello,es6!`console.log(str)//2、实现变量取值let a=10let b=20let c=`${a}+${b}`console.log(c)//10+20//3、实现调用函数function f(){return "es6"}let str1=`hello,${f()}!`console.log(str1)//hello,es6!</script>
7、声明对象
<script>const name="lucy"const age=20//传统方式const p1={name:name,age:age}console.log(p1)//es6const p2={name,age}console.log(p2)</script>
8、定义方法及调用
<script>//传统方式const person1={sayHi:function(){console.log("hi")},sayhaha:function(){console.log("haha")}}//方法调用person1.sayHi()person1.sayhaha()//es6定义方法,去掉functionconst person2={sayHi(){console.log("hi")},sayhaha(){console.log("haha")}}person2.sayHi()person2.sayhaha()</script>
9、对象赋值与合并
<script>let person={name:"lucy",age:20}let person1={...person}console.log(person1)let name={name:"lucy"}let age={age:20}let person3={...name,...age}console.log(person3)</script>
10、箭头函数
<script>//传统方式var f1=function(m){return m}console.log(f1(2))//箭头函数var f2=m=>mconsole.log(f2(8))</script>
练习:
//传统方式var f3=function(a,b){return a+b}console.log(f3(1,2))//箭头函数var f4=(a,b) =>a+bconsole.log(f4(2,3))
3、vue
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
1、HelloWorld
1、创建html页面,使用快捷键!生成html代码
2、将vue的js文件复制到磁盘当前目录下,在html页面中引入
vue.min.js
3、在html页面中加上div标签,div添加属性id
4、编写vue代码,固定的结构
5、使用插值表达式{{}}获取值
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><!-- 3、在html页面中加上div标签,div添加属性id --><!-- 5、使用插值表达式获取message的值 --><div id="app">{{message}}</div><!-- 2、将vue的js文件复制到磁盘当前目录下,在html页面中引入 --><script src="vue.min.js"></script><!-- 4、编写vue代码,固定的结构 --><script>new Vue({el: '#app',//绑定vue作用的范围data: {message: 'Hello Vue!'//此处内容自定义}})</script></body></html>
2、抽取代码片段
文件-》首选项-》用户代码片段-》新建全局代码片段文件
文件名:vue-html.code-snippets
生成代码快捷键为:vuehtml
{"vue htm": {"scope": "html","prefix": "vuehtml","body": ["<!DOCTYPE html>","<html lang=\"en\">","","<head>"," <meta charset=\"UTF-8\">"," <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">"," <meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\">"," <title>Document</title>","</head>","","<body>"," <div id=\"app\">",""," </div>"," <script src=\"vue.min.js\"></script>"," <script>"," new Vue({"," el: '#app',"," data: {"," $1"," }"," })"," </script>","</body>","","</html>",],"description": "my vue template in html"}}
3、单向数据绑定v-bind指令
自己变,其他值不会跟着发生改变
content: '我是标题',message: '页面加载于 ' + new Date().toLocaleString()
<!-- 如果要将模型数据绑定在html属性中,则使用 v-bind 指令此时title中显示的是模型数据--><h1 v-bind:title="message">{{content}}</h1><!-- v-bind 指令的简写形式: 冒号(:) --><h1 :title="message">{{content}}</h1>
4、双向数据绑定
自己变,其他值会跟着发生改变
searchMap:{keyWord: 'vue'}
<input type="text" v-bind:value="searchMap.keyWord"></input><input type="text" v-model:value="searchMap.keyWord"></input><p>您要查询的是:{{searchMap.keyWord}}</p>
5、事件绑定
data: {searchMap:{keyWord:'vue'},//查询结果result:{}},methods:{search(){console.log("search...")},f1(){console.log("f1...")}}
<!-- vue绑定事件 --><button v-on:click="search()">查询</button><!-- vue绑定事件简写形式 --><button @click="search()">查询1</button>
6、修饰符阻止表单提交
.prevent
new Vue({el: '#app',data: {user:{}},methods:{onSubmit(){if(this.user.username){console.log("提交表单")}else{alert("请输入用户名")//弹窗}}}})
<form action="save" v-on:submit.prevent="onSubmit"><input type="text" id="name" v-model="user.username"></input><button type="submit">保存</button></form>
7、指令v-if
v-show指令与v-if指令一样,但v-if指令时懒加载v-show不是
new Vue({el: '#app',data: {result: false}})
<input type="checkbox" v-model="result">是否选中</input><!-- true时输出result --><h1 v-if="result">vue</h1><!-- false时输出html --><h1 v-else>html</h1>
8、指令v-for
new Vue({el: '#app',data: {userList: [{id: 1,username: "zhangsan" ,age: 20},{id: 2,username: "lisi" ,age: 21},{id: 3,username: "wangwu" ,age: 22}]}})
<!-- 带实心点的列表 --><ul><li v-for="n in 10">{{n}}</li></ul><!-- 带序号的列表 --><ol><li v-for="(n,index) in 10">{{n}}--{{index}}</li></ol><!-- 横线分割 --><hr/><table border="1"><tr v-for="user in userList"><td>{{user.id}}</td><td>{{user.username}}</td><td>{{user.age}}</td></tr></table>
9、vue组件
1、局部组件:只能在当前页面有效
new Vue({el: '#app',//定义局部组件components: {//组件名'Navber':{//组件内容template:'<ul><li>首页</li><li>学员管理</li></ul>'}}})
<!-- 引用组件 --><Navber></Navber>
2、全局组件
1、在当前包下创建components包
2、创建js文件Navber.js
//定义全局组件Vue.component('Navber',{template:'<ul><li>首页</li><li>学员管理</li></ul>'})
3、在项目中导入该js文件即可使用
<script src="components/Navber.js"></script>
10、vue生命周期
created
mounted
created(){console.log("页面渲染前。。。。。")},mounted(){console.log("页面渲染后。。。。。")}
11、vue菜单导航
1、导入js文件
vue-router.min.js
<h1>Hello App!</h1><p><!-- 使用router-link组件来导航 --><!-- 通过传入`to`属性来链接 --><!-- <rounter-link>默认会被渲染成一个`<a>`标签 --><router-link to="/">首页</router-link><router-link to="/student">会员管理</router-link><router-link to="/teacher">讲师管理</router-link></p><!-- 路由出口 --><!-- 路由匹配到的组件将渲染在这里 --><router-view></router-view>
<script>//1、定义路由组件const Welcome={template: '<div>欢迎</div>'}const Student={template: '<div>student list</div>'}const Teacher={template: '<div>teacher list</div>'}//2、定义路由//每个路由应该映射一个组件const routes=[{path: '/',redirect: '/welcome'},//设置默认指向的路径{path: '/welcome',component: Welcome},{path: '/student',component: Student},{path: '/teacher',component: Teaacher}]//3、创建router实例,然后穿routes配置const router=new VueRouter({routes//相当于缩写 routes: routes})//4、创建挂载根实例//从而让整个应用都有路由功能const app=new Vue({el: '#app',router})//即可应用了</script>
4、axios
1、创建axiosdemo文件夹并创建html页面,导入vue和axios的js文件
vue.min.jsaxios.min.js
2、创建user.json文件
{"sucess":true,"code":200,"message":"成功","data":{"item":[{"name":"lucy","age":20},{"name":"mary","age":30},{"name":"jack","age":40}]}}
3、编写html页面
new Vue({el: '#app',data: {userList: []},created(){//页面渲染前调用方法获取数据this.getUserList()},methods:{getUserList(){axios.get("user.json").then(sucess =>{//成功执行的方法//将得到的结果复制给memberListthis.userList=sucess.data.data.items}).catch(error =>{//失败执行的方法})}}})
<div v-for="user in userList">{{user.name}}--{{user.age}}</div>
5、element-ui
快速开发工具
官网:http://element-cn.eleme.io/#/zh-CN
6、node.js
javascript的运行环境
模拟服务器效果
官网:https://nodejs.org/en/
中文网:http://nodejs.cn/
1、下载安装node.js,建议安装在c盘
2、创建node.js文件
3、cmd窗口进入到node.js文件所在目录
4、执行 node 文件名 命令即可
7、npm包管理
类似maven的依赖管理工作
安装nodejs时,连带安装了
npm -v
1、初始化项目
npm init -y ===》表示利用默认配置初始化项目,成功后生成package.json文件
2、npm 下载js依赖
1、设置镜像,保证下载速度
npm config set registry https://registry.npm.taobao.org
#查看配置,检验是否配置成功nmp config list
2、下载依赖,会自动锁定版本锁定版本
npm install jquery#指定版本下载npm install jquery@2.1.x
3、根据package.json下载依赖
npm install
4、其他命令
#devDependencies节点:开发时的依赖包,项目打包到生产环境的时候不包含的依赖#使用 -D参数将依赖添加到devDependencies节点npm install --save-dev eslint#或npm install -D eslint#全局安装#Node.js全局安装的npm包和工具的位置:用户目录\AppData\Roaming\npm\node_modules#一些命令行工具常使用全局安装的方式npm install -g webpack#更新包(更新到最新版本)npm update 包名#全局更新npm update -g 包名#卸载包npm uninstall 包名#全局卸载npm uninstall -g 包名
8、babel转码器
es6转换成es5
1、创建文件夹并且初始化后,执行,即可安装babel
npm install --global babel-cli
2、查看是否成功
babel --version
3、创建js文件编写es6代码
// 转码前// 定义数据let input = [1, 2, 3]// 将数组的每个元素 +1input = input.map(item => item + 1)console.log(input)
4、在当前项目下创建配置文件.babelrc
{"presets": ["es2015"],"plugins": []}
5、安装es2015转码器
npm install --save-dev babel-preset-es2015
6、使用命令进行转码
文件
babel es6/01.js -o dist/001.js ===>es6文件夹下的01.js转码到dist文件夹下的001.js
文件夹
babel es6 -d list ===>es6文件夹下的转码到list文件夹下
