• 21


    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)
    })
  • 相关阅读:
    在阿里写了8年代码后,我才明白这些道理
    2017双11交易系统TMF2.0技术揭秘,实现全链路管理
    加入新公司快速进入状态的心得
    Kibana+ElasticSearch实现索引数据的几种查询方式
    记一次jenkins发生的无法判断字符串前后空格
    ansible-playbook调试
    记一次ansible-playbook jenkins传空格的标量导致删除了服务的主目录
    rabbitmq集群中队列的完整性
    html5分割上传实现超大文件无插件网页上传思路
    html5分割上传实现超大文件无插件网页上传功能
  • 原文地址:https://www.cnblogs.com/xuexiaotian/p/14496510.html
Copyright © 2020-2023  润新知