21
1-nodejs 中有哪些常用的内置模块
1)url模块
将请求字符串转换为对象
2)querystring
将查询字符串---->对象
3)path
Join() 地址拼接
extname() 获取文件的后缀名
basename() 获取地址最后一个文件的名称
dirname() 上级目录地址
isAbsolute() 判断是否是绝对路径 true false
resolve() 将相对路径转换为绝对路径
静态资源:
路由配置后,客户端虽然可以访问不同的页面;但是页面里面的外部链接仍然无效,比如:link的外部css,script的src链接,image的src链接等都是无效的。
为什么这些资源是无效的?
我们一定不要认为,客户端请求了html或页面后,页面里面的外部链接就会自动请求得到;实际是,我们请求到html或页面后,浏览器在解析这个页面的过程中遇到外部链接,还会继续向服务器发请求,那么服务器就需要对这些请求进行处理(比如css,js,image等请求连接);这个处理的过程我们就可以认为是在处理静态资源。
静态资源的处理,其实和路由的配置非常相似,只不过静态资源都有指定的目录和特殊的后缀,简单处理如下:
网站开发模式
网站的开发方式,目前来看主要有两种
a)服务端渲染(SSR server-side rendering)
i.服务端渲染的内容不是静态页(.html),而是模板页(.php,.jsp,vue 使用模板语法进行页面渲染,把动态数据解析为静态的html)
ii.数据来源是服务端
b)前后端分离
i.前台负责写html静态页,使用ajax请求来渲染上面的数据
ii.后台负责提供接口
注意:如果是前端端分离,则src,href,action等链接,一定要写全地址,比如http://localhost:3000/css/index.css。
如果是服务端渲染,则src,href,actions等链接,需要写路由配置的配置项,比如:/about,/list等。
2-常用的第三方模块
第三方模块安装:
node 包管理工具(npm全称 node package manager)
(cnpm全称 china node package manager)
安装代码:npm install -g cnpm --registry=https://registry.npm.taobao.org
yarn(第三方管理包,国内不常用,下载慢,facebook弄出来的)
https://yarn.bootcss.com/
初始化:yarn init -y
安装模块: yarn add 模块名
安装package.json中保存的模块: yarn intall (可以加淘宝源辅助安装–registry=https://registry.npm.taobao.org)
第三方模块nodemon
https://www.npmjs.com/package/nodemon
npm install -g nodemon
mysql模块
https://www.npmjs.com/package/mysql
cnpm install mysql
crawler模块(爬虫)
https://www.npmjs.com/package/crawler
cnpm install crawler
mime模块(让网页识别MP4等格式,让浏览器正常解析)
查询网址:https://www.npmjs.com/package/mime
安装代码:npm install mime
express(第三方模块)
实现get&post请求结合mysql进行增删查改
https://www.npmjs.com/package/express
npm install express
body-parser中间件(第三方)
http://www.expressjs.com.cn/en/resources/middleware/body-parser.html
cnpm install body-parser --save
session(express中间件,存登录信息)
http://www.expressjs.com.cn/en/resources/middleware/session.html
npm install express-session
3-如何创建一个服务器
var http=require('http');
var fs = require('fs');
var url = require('url');
//创建服务器
http.createServer(function(request,response) {
//解析请求,包括文件名
var pathname= url.parse(request.url).pathname;
//输出请求的文件名
console.log("Request for "+ pathname + " received.");
//从文件系统中都去请求的文件内容
fs.readFile(pathname.substr(1),function(err, data) {
if(err) {
console.log(err);
//HTTP 状态码 404 : NOT FOUND
//Content Type:text/plain
response.writeHead(404,{'Content-Type': 'text/html'});
}
else {
//HTTP 状态码 200 : OK
//Content Type:text/plain
response.writeHead(200,{'Content-Type': 'text/html'});
//写会相应内容
response.write(data.toString());
}
//发送响应数据
response.end();
});
}).listen(8081);
console.log('Server running at http://127.0.0.1:8081/');
4-http 搭建的服务相应给客户端的数据如果是中文,应该如何处理
app.on('/',(req,res)=>{
res.writeHead(200,{
'content-type':'text/html;charset=utf8'
})
})
5-第三方 router 模块和 serve-static 如何使用,作用是什么?
1.router
其功能是实现路由
使用方法:
获取路由对象
调用路由对象创建路由
启动路由
const getRouter = require('router')
const router = getRouter();
router.get('/index', (req, res) => {
res.end('Hello World!')
})
server.on('request', (req, res) => {
router(req, res, () => {})
})
2.sever-static
其主要功能是实现静态资源的访问
使用方法:
引入serve-static模块获取创建静态资源服务功能的方法
调用方法创建静态资源服务并指定静态资源服务目录
启用静态资源服务功能
使用代码如下:
const serveStatic = require('serve-static')
const serve = serveStatic('public'); // public为静态文件目录地址
server.on('request', () => {
serve(req, res)
})

浙公网安备 33010602011771号