> 1.Node.js 基于javascript开发,运行在服务端。 > 2.事件驱动、非阻塞I/O > 3.基于Google的V8引擎,V8引擎执行Javascript的速度很是快,性能很是好。
> [node 官网](http://nodejs.cn) > 检查是否安装成功 > `node -v /--version`
> 1. node和浏览器同样能够执行js文件 cmd 打开命令窗口 在终端输入 ` node 文件名.js ` > 2. 读/写文件(fs) > 3. 搭建web服务
2.3.1 什么是客户端渲染和服务端(SSR )? 二者本质的区别在于究竟谁来完成html的拼接工做,若是是在服务器端完成的,而后返回给客户端,就是服务器端渲染,而若是是前端作了更多的工做完成了html的拼接,则就是客户端渲染。 2.3.2 优势和缺点 服务端渲染优势: 1. 浏览器打开页面耗时少。由于后端已经拼接完html和数据,浏览器直接解析dom就行。 2. 有利于SEO的优化。 3. 后台生成静态文件,对于那些数据变化少的页面来讲,能够生成缓存片断,这样就减小了数据库查询时间和渲染时间,直接从缓存获取便可。 服务端渲染缺点: 1.不利于先后端分离,开发效率慢。 2. 占用服务器资源增多; 客户端渲染优势: 1. 先后端分离,开发效率加快,前端只专一于ui的设计,后端只专一于后端的业务逻辑开发。 2. 用户体验增强,能够作成spa,无刷新获取数据$ajax 客户端渲染缺点: 1. 前端页面渲染时间较长,须要先请求数据再加载页面。 2. 不利于SEO > <p style="color:red">总结: 如今的页面都是交叉作的,对于重要信息能够服务端渲染出来,对于不重要的能够经过js 获取数据渲染 </p>
fs(文件系统)javascript
异步地读取文件的所有内容。
fs.readFile('文件路径',function(err,data){
if(err) throw err;
console.log(data)
});
异步地写入文件
fs.writeFile('文件路径','node 学习','utf8',function(err,data){
});
异步的复制文件
fs.copyFile('源文件.txt', '目标文件.txt', (err) => {
if (err) throw err;
console.log('源文件已拷贝到目标文件');
});
path(路径)html
返回当前文件的文件名
path.basename('/url/index.html') // 返回 index.html
path.basename('/url/index.html','.html') //返回 index
返回当前文件所在的目录
path.dirname('/url/index/script.js') //返回 /url/index
返回当前文件的扩展名
path.extname('/url/index/script.js') //返回 .js
将字符串拼接起来 返回文件目录 路径
path.join('foo','index','sdfk/sine','aske','..') //返回 foo/index/sdfk/sine
返回一个对象{root,dir,base,ext,name}
path.parse('/home/user/dir/file.txt') //返回 {root:'/',dir:'/home/user/dir',base:'file.txt',ext:'.txt',name:'file'}
将路径或路径片断的序列解析为绝对路径
path.resolve('/a','./b','c') //返回 /a/b/c
module(模块)前端
exports 和 module.exports (暴露)
exports.f = function(){}
module.exports = function(){}
> * __http(服务)__
建立服务器
http.creatServer(function(req,res){}) //返回http.server 实例
.listen(3000,function(){
console.log('开启服务')
})
响应api
res.statusCode = '404' // 发送状态码
res.setHeader('content-type','text/plain') //设置请求头
res.write('发送的客户端的内容','utf8',function(err,data){
}) // 响应数据
res.end() //结束响应
简单案例java
//第一步加载核心模块 http
var http = require('http')
//第二步 建立http服务
var server = http.createServer();
//第三步 监听请求的api
server.on('request',function(req,res){
var url = req.url; // 获取请求的路径 /
res.setHeader('content-type','text/html;charset=utf-8')
//路由设计
if(url == '/login'){
res.end('登陆页')
}else if(url == '/register'){
res.end('注册页')
}else{
res.end('404页面')
}
})
// 第四步 监听路径 端口号
server.listen(3000,function(){
console.log('服务已启动')
})
注 : 要有异步编程的思想 node
回调函数web
概念:回调函数就是传递一个参数化的函数,就是将这个函数做为一个参数传到另外一个主函数里面,当那一个主函数执行完以后,再执行传进去的做为参数的函数。走这个过程的参数化的函数 就叫作回调函数。换个说法也就是被做为参数传递到另外一个函数(主函数)的那个函数就叫作 回调函数。
例子:ajax
f1() // f1 是一个很耗时的函数
f2()
//从新更改f1的代码 加一些异步操做
function f1(callback){
setTimeout(function(){
callback()
},1000);
//下面是执行f1以前的代码
}
f1(f2)
应用场景正则表达式
解决一些异步操做,例如从一个异步中拿到数据。数据库
promiseexpress
概念:所谓封装,就是把相同的代码抽离出来封装成一个盒子(类); 特性:可复用,可维护,代码逻辑简洁明了 node里面独立模块(包含封装的概念) 所谓模块化,也是独立文件,职责比较单一,有点像是各司其职,各司其责的概念;
任何代码业务逻辑,一定少不了封装,你是一个资深工程师,一定少不了封装
概念:Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功。(把原生的http服务给封装了一下同时又扩展不少功能) 安装: `$ npm install express --save`
监听路由的方法
匹配路径的方式
3.响应的方法
路由设计
使用模板引擎
使用静态资源
案例