[Node.js 与前端开发实践 | 青训营笔记]

67 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

Node.js简介

1.什么是Node.js?

Node.js是一个基于Chrome V8引擎的JS运行环境

2.Node.js中的JS运行环境

  • V8引擎和内置API函数
  • 浏览器是JS的前端运行环境
  • Node.js是Js的后端运行环境
  • Node.js中无法调用DOM和BOM等浏览器内置API

Nodejs模块化

1.内置模块 nodejs官方提供
2.自定义模块 用户创建的.js文件
3.第三方模块 使用前需下载,第三方开发的模块

模块作用域

在自定义模块定义的变量、方法等成员,只能在当前模块被访问,
优点: 防止全局变量污染问题

模块化规范

1.nodejs遵循CommonJS模块化规范 CommonJS规定了模块的特性和各模块间如何相互依赖
2.每个模块内部,module变量代表当前模块
3.module变量是一个对象,它的exports属性是对外的接口
4.加载某个模块是加载module.exports属性,require()方法用于加载模块

http模块

基础概念

什么是客户端,什么是服务器?

在网络节点中,负责消费资源的电脑,叫做客户端。 负责对外提供网络资源的电脑,叫做服务器。

Http模块是Node.js官方提供的,用来创建web服务器的模块。通过http模块提供的Http.createServer()方法,就能方便的把一台普通电脑,变成一台web服务器,从而对外提供Web资源服务。

//导入htpp模块
const http = require('http');
//创建web服务器
const server = http.createServer();
server.on('request',(request,response)=>{
    response.setHeader('Content-Type','text/html; charset=utf-8')//定义请求头格式
    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Headers", '*');
    const url = request.url;//端口号默认为8000所以不显示
    const method = request.method;
    let str = `请求的url${url},请求的方法是${method}`;
     // 调用 res.end() 方法,向客户端响应一些内容
    response.end(str);
})
server.listen(8000,()=>{
    console.log('listening on http://127.0.0.1:8000');
})
//自动重新启动服务器 npx nodemon inedx.js

读取和写入文件

const fs = require('fs');
const path = require('path');//使用path路径拼接来获取当前路径

const pathStr = path.join(__dirname,'/files/file1.txt')
const getPath = path.basename(pathStr);//使用path中的basename方法获取路径中的文件名
console.log(getPath)//输出file1.txt
let getPathWithoutTxt = path.basename(pathStr,'.txt');//第二个参数可以删去文件的扩展名只获得文件的名称
console.log(getPathWithoutTxt);//输出file1
console.log(path.extname(pathStr))//输出.txt  获取文件的扩展名


fs.readFile(pathStr,'utf-8',function(err,dataString){//如果没有标明utf-8格式·,在打印dataString的时候应该用toString()方法转为字符串,否则会出现乱码
    if(err){
        return console.log('文件读取失败' + err.message);
    }

    console.log('文件读取成功' +'\t' +dataString);

    const arrOld = dataString.split(' ')//dataString.tostring().split('');
const array = [];
arrOld.forEach(item=>{
    array.push(item.replace('=',':'));
})
const newStr = array.join('\r\n');
console.log(newStr);
fs.writeFile(__dirname + '/files/writeFiles.txt',newStr,function(err){
    if(err){
        console.log('文件写入失败'+ err.message);
    }
    console.log('读取成功');
})
})
console.log(__dirname)

Express框架 简介

什么是 Express

官方给出的概念:Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。

通俗的理解:Express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建 Web 服务器的

Express 的本质:就是一个 npm 上的第三方包,提供了快速创建 Web 服务器的便捷方法。

Express 的中文官网: www.expressjs.com.cn/

Express 能做什么

对于前端程序员来说,最常见的两种服务器,分别是:

  • Web 网站服务器:专门对外提供 Web 网页资源的服务器。
  • API 接口服务器:专门对外提供 API 接口的服务器。

使用 Express,我们可以方便、快速的创建 Web 网站的服务器或 API 接口的服务器