JS是解释性语言,因node服务端的应用,而贯通了先后台。javascript
关于var和lethtml
var:前端
1.var声明的变量和function声明的变量总体,会被提高到当前做用域的顶部。 2.无块级做用域 3.var声明的变量可重复赋值,即 var name = 'lin' var name = 'li' 变量提高后 var name name = 'lin' name = 'li' 结果是 name = 'li'
let(更严谨):java
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]node
原始写法:express
arr.filter(function(value, index, arr){ return arr.indexOf(value) == index; });
ES6写法:npm
arr.filter((v, i, a)=>{ return a.indexOf(v) == i; });
ES6更简写法:canvas
arr.filter((v, i, a)=> a.indexOf(v) == i); //只有单条返回语句时,return可省
解构赋值服务器
模板字符串mvc
var obj = {name:'Lin'} console.log(`my name is ${obj.name}`) //my name is Lin
//绘制流程:(联系到实际,就是做画的全过程,这是本质) //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背景色,即看到效果
http://javascript.ruanyifeng....
Node 应用由模块组成,采用 CommonJS 模块规范。
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对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的并行下载速度更快