认识node_modules

1.认识node_modules

js 前端语言 运行在浏览器 浏览器的js 没有读写文件的功能
input:type=file 可以选中自己本地的资源

    Node.js:js在服务器运行(基于Node运行),能够对服务器文件进行操作读写

    把Node安装再来服务器上 在Node环境下运行js,node赋予了js进行I/O操作的能力

    I/O I:input输入  O:output:输出  通过node.js可以更改读写文件内容
       /学习在node环境  js的语法都有什么

    客户端  全局下 window 大对象 JS在客户端中全局对象是window(内置的方法)
    服务器  全局下 global 大对象 JS在node运行全局 对象是global;

    1.Node 是基于V8引擎渲染和解析js,它不是后台语言,是一个工具或者环境,用来解析js的工具和环境,为什么或是后台语言,主要一般会把node安装在服务器上,在服务器上运行js代码,通过node解析的js代码可以做服务器一些事情
         1):学习webpack,webpack编译打包工具,基于node运行的
         2): npm 安装一些模块 npm,install,jquery --save-devnpmjs.com
    2.基于Node构建中小型项目(js是一门全栈语言)
node  应用
    1.中小型项目  可以用node做
    客户端请求  <-->    服务器(基于node)
       1. 浏览器地址 发送请求  
       2. 服务器根据传输过来路径,找到对应资源文件 进行读取 返回给客户端
        第一次为资源文件请求
       3.解析代码 遇到src,href再次发生请求
        这次为ajax请求 一般为数据
       4.服务器响应 进行读写数据库
    2. 作为中间层
    Node特点:单线程异步  无阻塞I/O  事件驱动
    服务层:抗压能力和并发能力很强
      作为中间层 对客户端发送过来的请求进行继承逻辑处理 在发送给服务端

2.node模块管理

模块管理规范
AMD require.js
CMD sea.js
Common.js node.js

    一个js文件就是一个模块 这些模块化思想 规定了js中我们的模块如何创建 如何导入 以及导出

    Node中模块管理
    1.在node环境下 我们创建一个js 相当于创建一个新的模块 模块中的方法都是这个模块私有的方法 不同的模块中同名方法 不会有任何冲突
    2.node给其提供一个导出模块中方法的语法 
     module.exports = {}  //导出
    3.require是node天生提供导入模块的方法,require导入的模块是同步 a中代码从前到后需要解析一遍 没有导入完成 不能做后面的事

    1.内置模块(核心模块) 2.第三方模块(axios,jquery) 3.自定义模块(自己创建的js)
    1) 可以省略后缀名.js
    2) 如果是调用自己的自定义模块 则需要加上相对路径/(根目录)./(当前目录)../(上级目录)
    3) 不加地址 先找第三方模块 再找核心模块 在找不到报错  throw err

3.node npm

1.Npm: 跟随安装node时,一并下载了Npm,下载完Node 可以使用Npm命令
把模块安装在全局环境和安装在当前项目中

    安装在全局
    命令:npm install   jquery   --global(npm install -g jquery)

    安装在本地
    命令:npm install xxx;
    package.json:距离安装过的模块小本本
             npm init -y
    删除 npm uninstall less --save-dev
    把模块安装设置为开发依赖(开发中)
             npm install less --save-dev
    把模块设置为生产依赖(部署到服务器上)
             npm install axios(npm install axios --save)

    babel-loader:用来把ES6编译成ES5的模块,代码最后上线时是ES5;在项目不是到服务器之前需要把ES6通过babel-loader编译成ES5;当前项目上线就不再需要babel-loader 所以这是一个开发依赖

    npm root -g 查看全局路径
    安装到全局和本地的区别
    1)安装到全局对任何项目都有作用
    2)安装到本地只对当前项目有作用

    在安装模块之前 一般先npm init -y,生成一个package.json配置文件
    把安装的模块生成配置清单 存放着package.json文件中,后期别人需要部署项目是,只需执行npm i就可安装在package.json中所有依赖,这叫跑环境
    npm i:把开发和生产依赖都安装一遍
    npm i --production 只安装生产依赖模块
    package.json 可以基于script选项配置本地可以执行的脚本命令
    npm run+script的属性名 相当于把这个属性名对应属性值放在命令窗口执行一次


    开发环境  正在开发的项目的代码
    生成环境  是指上线的项目代码
    主干 生产环境的代码
    分支 开发环境的代码

    test set NODE_EVN=dev&&node a.js/设置全局变量
    在NODE里设置
    set NODE_EVN=production  //node里设置全局变量

4.node 内置模块

三种模块 内置模块 第三方模块 自定义模块
fs 文件操作系统/运行在node环境下 不是运行在浏览器

1.readdir 异步读取指定的文件目录  读取完毕 触发第二个参数 第二个参数必须是回调函数  会给回调函数传入2个参数err 读取的错误的信息  result 读取的结果 如果读取成功 err 是null  读取成功返回一个数组
   
2.readdirSync 同步读取指定目录 返回数组 包含目录的字符串 读取完成后 执行下面方法
 
3.readFileSync 读文件;
 
4.readFile

5.writeFileSync(path,内容,编码格式)

6.writeFile  异步  当写入文件成功是 执行这个回调函数

7.appendFileSync 向文件追加内容

8..appendFile 向文件追加内容  异步

9.copyFileSync 把文件里面内容拷贝新文件中 并替换到原来内容 覆盖

10.copyFile  异步 

11.mkdir  创建文件夹目录

12.rmdir  删除文件夹目录  异步

13.unlink 删除文件

5.express中间件

let  express = require("express");
let bodyParser = require("body-parser");
let app = express();
app.listen(8080,function(){
    console.log("8080端口已启动");
})
// 中间件:在创建完服务以后和处理请求之前,我们提前做一些事情
// 服务器可以提前将json中的数据读取出来,提前准备好,当真正的请求来临之时,不需要再去花费时间读取,直接取到返回就好;一般情况下,把数据放到请求体上 req.body这个属性上,或者请求主体的信息也一般当道req.body上;因为每个请求都可以直接从req.body获取;



app.use(function(req,res,next){
    // req:请求信息
    // res : 响应信息
    // next: 下一步
    // console.log(666);
    req.a=1999;
    next();
})

// 通过执行不同的方法把客户端POST请求传递的内容转化为对象存放在了req.body上
//
app.use(bodyParser.urlencoded({
    extended:true
}));
// 为了处理静态资源文件;就是html css
app.use(express.static("./client"));
// 路由: 前端一个请求,后台就对应一个路由
app.post("/login",function(req,res){
    console.log(req.body)
})
app.post("/list",function(req,res){
    console.log(req.body)
})

// 一个完整项目: 包含了前端和后端的代码,整个项目要最后要部署在服务器的某个端口下;【0-65535】;
// 前端: 前端的
// 后端: 要做监听;启动服务;运行一段固定的后台代码,就能启动一个服务

6.mine模块

//mime 第三方模块
//内置模块跟随下载安装node时 就下载完毕了
let http = require("http");
let mime = require("mime");
let fs = require("fs");
let url = require("url");
http.createServer(function(req,res){
    let  {pathname}=url.parse(req.url,true);
    //mime 在mime模块有一个getType方法  会根据文件后缀名 返回对应的content-type类型
    //   res.setHeader  响应头
    res.setHeader('content-type',mime.getType(pathname))
    fs.readFile("."+pathname,function(err,data){
        res.end(data)
    })
}).listen(8080);```

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值