Node.js——3

模块的分类

  1. node核心API模块:随着Node.js安装包一同安装到本地的官方模块. eg:fs,path.

      //导入核心模块
      const 变量 = require('模块名')
    
  2. 第三方模块:就是包,非官方的,需要npm网站下载

    //导入第三方模块  先通过npm安装第三方模块,存储在node_modules文件夹里
    const 变量 = require('模块名');
    
  3. 自定义模块,我们在本地自己写的js文件

     //记得module.exports导出
     //导入自定义模块
     const 变量 = require('模块路径名/文件名.js');
    

status超过500就是服务器问题 404是前端路径问题 304浏览器缓存

包的定义和使用,我们一般只需要通过npm下载下来用

  1. 可以理解为插件,这个插件可能也引用了其他的第三方模块,功能的集合体的文件夹,提供某些具体的功能.
  2. 遵循commonJS规范,入口文件必有module.exports导出成员供我们使用
  3. 包的规范结构,了解即可
    -必须是一个单独的文件夹
    -包一定要存放在node_modules文件下,这样在导入第三方模块时,不需要写路径
    -必须要有package.json这个文件,这个文件必须在包的顶层目录下.
    1. 符合json格式
    2. 必须有三个属性
      -name 包的名字
      -version 包的版本号
      -main 包的入口文件

npm

  • 是一个网站 https://www.npmjs.com/
  • 一个包管理工具,在我们安装node的时候就自动帮我们安装上了。 可以在控制台输入 npm -v查看版本号

安装和卸载全局包

全局安装,安装在整个电脑里的,任何地方都可以使用(工具性质的包,适合安装到全局,安装目录在c:\Users\用户目录\AppData\Roaming\npm)

npm install 包名字 -g   //g是全局的意思    简写: npm i 包名字 -g

全局卸载,必须是全局安装的包才能卸载

npm uninstall 包名字 -g  //g是全局的意思

安装和卸载本地包

  • 本地包,就是在某个项目中才使用的包
  • 包会安装在node_modules文件夹下
  • 想在某个项目中使用包
  • 项目名字是英文
  • 拿到一个空项目,必须在当前项目根目录中,先运行npm init -y命令,初始化一个package.json配置文件,否则包无法安装到本地项目中.
  • 安装本地包: npm i 包名 -S .
  • 卸载本地包:npm uninstall 包名字 -S

安装国内的cnpm包管理器,下载包速度快

  • 安装:npm i cnpm -g
  • 使用:cnpm i 包名字 -S

删除node_modules文件夹后如何安装之前所有包

一个项目需要依赖的第三方包有很多,为了减小项目文件传递时间,node_modules文件夹可以删除,node_modules删除后项目就不能运行了,我们如何安装之前装过的包呢?

//在当前根目录下,开发时用这个命令
npm i  //此时node会根据package.json中所记录的包名和版本号开始自动安装所有的包

B/S交互

  • HTTP协议的通信模型:客户端发送(请求)–服务器(处理)请求–服务器处理的结果通过网络发送给客户端(响应)
  • 静态资源:服务器只需要读取并直接发送给客户端,不需要进一步处理的资源.
  • 动态资源:服务器端没有现成的资源,需要服务器端动态生成的资源.

node创建一个最基本的web静态资源服务器

  • 静态资源服务器(没有数据库参与)

     //1.导入http模块
     const http = require('http');
     //2.创建服务器对象(此时的服务器不能监听任何客户端请求也没启动)
     const server = http.createServer();
     //3.监听客户端请求,通过on方法绑定监听事件(request)并指定处理函数
     server.on('request', (req, res) => {
      //req 客户端对象
      //res 服务器对象
      //防止中文乱码
      res.writeHead(200, {
        'Content-Type': 'text/plain; charset=utf-8'
    })
    res.end('服务器启动成功'); //向客户端发送数据
    })
    //4.启动服务器{server.listen(端口,IP地址,启动成功的回调函数)}
    server.listen(3000, '127.0.0.1', () => {
    console.log('http://127.0.0.1:3000')
    })
    
  • 动态资源服务器(有数据库参与)

根据不同url返回不同页面,包括js,css

 const http = require ('http');
  const server = http.createServer;
  server.on('request', (req, res) => {
     const url = req.url
     if (url === '/'   ||  url === 'index.html') {
     res.end('首页')
     } else if (url === '/movie.html') {
     res.end('电影')
     } else {
     res.end('请求的内容不存在')
     } 
  })
  server.listen(3000, '127.0.0.1', () => {
        console.log('http://127.0.0.1:3000')
  })

优化后的

//1.导入http, fs, path模块
const http = require('http');
const fs = require('fs');
const path = require('path');
//2.创建服务器对象
const server = http.createServer();
//3.监听客户端请求
server.on('request', (req, res) => {
	//req 客户端对象
    const url = req.url; //客户端请求的url路径
    if(url == 路径字符串) { //路径字符串根据自己需求来写
        //读取文件,发送给客户端
        fs.readFile(path.join(__dirname, html或js或css文件路径), (err, data) => {
            if(err) return res.end('404 Not Found页面读取失败');
            //发送给客户端
            res.end(data)
        })
    }else if (url === '/movie.html') {
    ......
    } else {
          res.end('404');
    }
})
//4.启动服务器
server.listen(3000, '127.0.0.1', () => {
    console.log('http://127.0.0.1:3000')
})

使用req.url获取客户端请求的URL地址
在node创建的http服务器中,客户端请求的任何文件都必须监听处理,index.html如果有css或者js都必须监听才能生效.

通过使用art-template模板返回动态页面

//1. npm init -y 初始化项目,文件夹必须是英文名称,生成package.json文件
//2. 安装art-Template
//cnpm i art-Template -S
//3.写代码
const http = require('http');
const path = require('path');
const temp = require('art-template');

const server = http.createServer();

server.on('request', (req, res) => {
  const url = req.url;
  if(url == '/') {
      //最好path.join()拼接路径
    const html = temp(path.join(__dirname, '/xx/art-template.html'), {
      //动态数据,后期可以从数据库获取
      name: 'ls',
      hobby: ['唱歌', '跳舞']
    });
    res.end(html);
  } else {
    res.end('404');
})

server.listen(3000, '127.0.0.1', () => {
  console.log('http://127.0.0.1:3000');
});











  
  
  
  Document


  

这是artTemplate模板渲染的页面

{{name}}

{{each hobby}}

{{$value}}

{{/each}}

你可能感兴趣的:(Node.js——3)