1、准备工作
安装vscode
下载相关的插件
1、创建空文件夹
2、vscode打开创建的空文件夹
3、将工作去另存为即可
2、es6
es6是一套标准,一套规范
JavaScript很好地遵循了这套规范
1、let定义变量及其作用域
<script>
//es6定义变量,及变量的作用域
//js定义变量 var a=10 没有作用范围
//es6定义变量 let a=10,其定义有作用范围
{
var a=10
let b=20
}
console.log(a)
console.log(b) //b is not defined
</script>
2、let不能重复定义相同的变量名
<script>
var a=10
var a=20
let b=10
let b=20
console.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=3
console.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.name
let age1=user.age
console.log(name1+"==="+age1)
//es6写法,大括号的属性名必须与对象属性名一致
let {name,age}=user
console.log(name+"***"+age)
</script>
6、模板字符串反引号`
1、实现换行
2、实现获取变量值
3、实现调用方法
<script>
//1、实现换行
let str=`hello,
es6!`
console.log(str)
//2、实现变量取值
let a=10
let b=20
let 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)
//es6
const 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定义方法,去掉function
const 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=>m
console.log(f2(8))
</script>
练习:
//传统方式
var f3=function(a,b){
return a+b
}
console.log(f3(1,2))
//箭头函数
var f4=(a,b) =>a+b
console.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 =>{//成功执行的方法
//将得到的结果复制给memberList
this.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]
// 将数组的每个元素 +1
input = 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文件夹下