JS是解释性语言,因node服务端的应用,而贯通了前后台。
【ES6】
-
关于var和let
var:
1.var声明的变量和function声明的变量整体,会被提升到当前作用域的顶部。 2.无块级作用域 3.var声明的变量可重复赋值,即 var name = 'lin' var name = 'li' 变量提升后 var name name = 'lin' name = 'li' 结果是 name = 'li'
let(更严谨):
1.无变量提升 2.有块级作用域 3.let声明的变量不可重复赋值,即 let name = 'lin' let name = 'li' 报错: Uncaught SyntaxError: Identifier 'name' has already been declared
-
箭头函数
示例:函数去重
let arr = [1,2,2,3,4]原始写法:
arr.filter(function(value, index, arr){ return arr.indexOf(value) == index; });
ES6写法:
arr.filter((v, i, a)=>{ return a.indexOf(v) == i; });
ES6更简写法:
arr.filter((v, i, a)=> a.indexOf(v) == i); //只有单条返回语句时,return可省
-
解构赋值
- Promise(解决嵌套太深问题)
-
模板字符串
var obj = {name:'Lin'} console.log(`my name is ${obj.name}`) //my name is Lin
【canvas】
//绘制流程:(联系到实际,就是作画的全过程,这是本质)
//1.画板
let cs = document.querySelector('canvas')
//2.画笔(使用2d画笔)
let pen = cs.getContext('2d')
//3.调色
pen.strokeStyle = 'blue'
//4.开始
pen.beginPath()
//5.绘制(moveTo,lineTo,strokeRect,arc)
pen.moveTo(10,10)
pen.lineTo(10,10)
//6.结束
pen.stroke()
给canvas背景色,即看到效果
【common.js】
http://javascript.ruanyifeng....
Node 应用由模块组成,采用 CommonJS 模块规范。
【node】
node做后台服务端,处理http请求的代码,得自己实现了。
实现:
1.由http模块,生成server来监听指定端口
2.端口连接时,触发回调,比对请求地址后,由fs模块读写文件
3.处理结果响应给前端
示例:
http.createServer((req,res)=>{
let pathname = url.parse(req.url).pathname;
fs.readFile(path.join(process.cwd(),pathname),(err,data)=>{
res.writeHead(200);
res.end(data);
});
})
【express】
express对http模块高度封装
使后台得以use中间件方式,区分路由,从而脱离出MVC式的项目结构目录
解释下这里提及的mvc:
m model 存放mongoose.model()生成的model
v view 指定可静态访问的目录
c controller 存放express.Router()方式处理的中间件,这儿放的是业务逻辑
路由会单独提取到一个文件中
示例:
const express = require('express')
const app = express()
app.use(express.static('./public'))
app.listen(3000,err =>{
if(err){
return console.log('3000端口失败')
}
console.log('3000端口监听成功')
})
【补充】
1.关于下载
npm会随着node而安装,但默认下载地址在国外。为提高下载速度,可通过nrm来切换镜像源。
npm i nrm -g
nrm ls
nrm use taobao
2.关于运行
node index.js //每次修改代码,都得手动重启服务端=>心累
yarn add nodemon -S //代码修改与服务器同步了 ps: yarn的并行下载速度更快
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。