1- nodejs 中有哪些常用的内置模块:
path模块: 用于处理文件路径:
path.normalize(路径解析,得到规范路径);
path.join(路径合并);
path.resolve(获取绝对路径);
path.relative(获取相对路径)。
fs模块:文件操作系统的API:
fs.readFile(filename,[options],callback); 读取文件。 fs.writeFile(filename,data,[options],callback);写文件。 fs.appendFile(filename,data,[options],callback);以追加的方式写文件。 fs.open(filename,flags,[mode],callback); 打开文件。 filename:文件名,必须。 data:写入的数据或者buffer流。 flags:操作标识,打开方式,r w。 [options]:指定权限,读、写、执行。是否可续写。 callback:读取文件后的回调函数。function(err,data); fs.mkdir(path,[mode],callback);创建目录。 fs.readdir(path,callback);读取目录。 fs.exists(path,callback);查看文件与目录是否存在。 fs.utimes(path,atime,mtime,callback);修改文件的访问时间和修改时间。 fs.rename(oldfilename,newfilename,callback);重命名文件名或者目录。 fs.rmdir(path,callback);删除空目录。 path:被创建目录的完整路径以及目录名。 atime:新的访问时间。 ctime:新的修改时间。 oldfilename、newfilename 旧名字和新名字。 callback:创建完目录后的回调函数。
http模块:
http.createServer(function(){});创建服务器。 http.get('路径',callback);发送get请求。 http.request(options,callback);发送请求。
2-常用的第三方模块:
1.nodemon :命令行工具,用以辅助项目开发,可以实时js文件是否改动,如果有改动,自动重新编译运行 (npm install nodemon)
2.nrm : 下载地址切换工具
使用步骤:npm install nrm -g
nrm ls
nrm use 下载地址名称
3.Gulp : 基于node开发的前端构建工具
使用步骤:npm install gulp
在项目根目录下建立gulpfile.js文件
重构项目的文件夹结构,src目录存放源代码文件,dist目录放置构建后文件
在gulpfile.js文件中编写任务
gulp中提供的一些方法:gulp.src()获取任务要处理的文件 ,gulp.dest()输出文件 ,gulp.task()建立gulp任务,gulp.watch()监控文件的变化
安装gulp命令行工具:npm install gulp-cli -g
gulp的一些常用插件:gulp-htmlmin(html文件压缩),gulp-file-include(公共文件包含),gulp-csso(压缩css),gulp-less(less语法转换),gulp-babel(JavaScript语法转换),gulp-uglify(压缩混淆JavaScript)
3- 如何创建一个服务器:
// 加载模块 const http = require('http') // 创建服务器 const app = http.createServer(); // 加载querstring模块,解决post请求参数 const querstring = require('querystring') // 监听请求 app.on('request', (req, res) => { res.writeHead(200, { 'content-Type': 'text/html; charset=utf-8' }); // 接受请求参数 // console.log(req.method) //post /* post请求通过data和end两个事件接收请求参数 post请求参数不是一次接收完成的 data: 当请求参数传递会触发data事件 end : 数据传递完成时触发end事件 */ // 定义变量接收参数 var postParams = '' req.on('data', (params) => { postParams += params }) req.on('end', () => { // console.log(postParams) // 处理字符串 // querstring 解析post请求的字符串 console.log(querstring.parse(postParams).username) console.log(querstring.parse(postParams).password) }) res.end('请求结束') }) // 监听端口 app.listen(3000, () => { console.log('服务器运行在3000端口') })
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, () => {}) }) 1 2 3 4 5 6 7 8 2.sever-static 其主要功能是实现静态资源的访问 使用方法: 引入serve-static模块获取创建静态资源服务功能的方法 调用方法创建静态资源服务并指定静态资源服务目录 启用静态资源服务功能 使用代码如下: const serveStatic = require('serve-static') const serve = serveStatic('public'); // public为静态文件目录地址 server.on('request', () => { serve(req, res) })