node相关知识

/**
 * 为什么javascript可以在浏览器中被执行 -> js解析引擎
 * 
 * node是什么:
 *  基于Chrome V8引擎的js运行环境
 * 内置API:
 *  fs, http, path, js内置对象...
 * 
 * 浏览器是js的前端运行环境,node是js的后端运行环境
 * node中无法调用DOM, BOM, AJAX等api,因为node中没有这些内置api
 * 
 * node中执行js
 *  命令: node 要执行的js文件路径
 * 
 * 
 * 一、fs文件系统模块
 *  用于操作文件的模块,提供了一系列方法和属性
 *  使用:
 *  const fs = require('fs')
 * 
 * 1. 读取文件
 *  fs.readFile(path, 编码格式, callback) 
 *    -- 编码格式默认utf-8
 *    -- callback两个参数, err 和 data
 *      -- 如果读取成功 err = null
 *      -- 如果读取失败 err为错误对象,data = undefined
 *  
 * 2. 写入文件
 *  fs.writeFile(file, data, callback)
 *    -- file:文件存放路径
 *    -- data:文件要写入内容
 *    -- callback: 参数为err
 *      -- 文件写入成功 err = null
 *      -- 文件写入失败 err为错误对象
 * 3. 路径拼接错误问题,是因为出现了./和../开头的相对路径
 *    解决:使用绝对路径 (如: C:\\Users\\zhangyu\\Desktop\\vue双向绑定\\成绩.txt)
 *      -- 一个\代表转义, 因此要用两个\\
 *      -- 缺点: 移植性差,不利于维护
 *    解决升级:使用__dirname (C:\Users\zhangyu\Desktop\vue双向绑定)
 *      -- 写法:(__dirname + '/ajax.js')
 * 
 * 二、path路径模块
 * 用于处理路径的模块,提供了一系列方法和属性
 *  使用:
 *  const path = require('path')
 * 
 * 1. path.join():将多个路径片段拼接成完整的路径字符串
 *    let path = require('path')
       path.join('a', '/b/c', '../', '/d');  
        -- 得到: a\b\d
        -- 原因: ../会返回上一级,因此c被忽略
 *    因此可以使用join拼接__dirname  如: path.join(__dirname, '/ajax.js')
 *    fs.readFile(path.join(__dirname, '/ajax.js'), 'utf-8', (err, data) => {
        console.log('data', data);
      })
 * 
 * 2. path.basename(fpath, ext): 获取路径中的最后一部分,通常用于获取文件名
 *    path.basename('/abc/ajax.js')
 *    -- 只传一个参数,得到文件名
 *      -- 得到:ajax.js
 *    path.basename('/abc/ajax.js', '.js')
 *    -- 传两个参数,去除文件后缀名 
 *      -- 得到:ajax
 * 
 * 3. path.extname(fpath): 获取文件的扩展名部分
 *    path.extname('/abc/ajax.js')
 *      -- 得到 .js
 * 
 * 
 * 三、http: 用来创建web服务器的模块
 *  用法:let http = require('http')
 *  IP: 每台计算机的唯一地址 "点分十进制" 0-255之间的数字 (eg: 192.168.0.111)
 *  DNS(域名地址服务器): 提供域名和IP之间转换的服务器
 * 
 *  创建基本的服务器
 *    1. 导入http模块                   
 *      let http = require('http')
 *    2. 创建服务器实例      
 *      let server = http.createServer()           
 *    3. 绑定request事件,监听客户端请求
 *      server.on('request', (req, res) => {
 *        req: url, method等属性
 *        res.setHeader('Content-Type', 'text/html;charset=utf-8') 
 *          -- 防止中文乱码
 *        res.end('中文')
 *      })
 *    4. 启动服务器
 *      server.listen(3000, function(){})
 * 
 * 
 * express: 基于node,快速、开放、极简的web开发框架
 *  安装: 
 *    npm install express --save
 *  使用:
     let express = require('express')
     let app = express()

     app.get('/test/:id', (req, res) => {
      -- 得到: req.params: {id: xxx}
      res.send('aaa的说法二')
     })
     app.listen(3000, () => {
      console.log('启动成功http://127.0.0.1:3000');
     })
 * 
 *  express.static()托管静态资源
 *   使用:
 *    app.use(express.static('public'))
 *   访问地址:
 *    http://127.0.0.1/img/bg.jpg (注意:public不会出现在访问路径中!!!)
 *   如果想让public出现在路径中
 *   写法:
 *    app.use('/public', express.static('public'))
 *   托管多个静态资源(调用多次express.static()即可,前面的优先级高)
 *    app.use(express.static('public'))
 *    app.use(express.static('./clock'))
 * 
 * express中路由:按照路由顺序进行匹配
 * 模块化路由:将路由抽离成单独模块
 *  1. 创建路由模块(一个单独的路由文件.js)
 *  2. 使用express.Router()
 *    const express = require('express')
 *    const router = express.Router()
 *    router.get('/test', (req, res) => {})
 *  3. 导出路由.js文件
 *    module.exports = router
 *  4. index.js页面引入
 *    const useRouter = require('路由文件.js地址')
 *    app.use(useRouter)
 *  
 *  为路由添加统一前缀
 *  app.use('/api', useRouter)
 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值