认识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);```

F:\zhigong\Node.js\node.exe F:\zhigong\Node.js\node_modules\npm\bin\npm-cli.js run serve --scripts-prepend-node-path=auto npm warn Unknown cli config "--scripts-prepend-node-path". This will stop working in the next major version of npm. npm warn Unknown user config "disturl". This will stop working in the next major version of npm. npm warn Unknown user config "sass_binary_site". This will stop working in the next major version of npm. npm warn Unknown user config "electron_mirror". This will stop working in the next major version of npm. npm warn Unknown user config "puppeteer_download_host". This will stop working in the next major version of npm. > client_home@0.1.0 serve > vue-cli-service serve INFO Starting development server... ERROR Failed to compile with 1 error 18:44:39 error in ./src/App.vue?vue&type=style&index=0&id=7ba5bd90&lang=less Syntax Error: Error: Can't resolve '/css/theme.css' in 'F:\zhigong\CS733540_20220327114826\server\client_home\src' ERROR in ./src/plugins/index.js 6:0-46 Module not found: Error: Can't resolve 'bootstrap/dist/css/bootstrap.min.css' in 'F:\zhigong\CS733540_20220327114826\server\client_home\src\plugins' @ ./src/main.js 5:0-32 13:8-15 ERROR in ./src/plugins/index.js 7:0-44 Module not found: Error: Can't resolve 'bootstrap/dist/js/bootstrap.min.js' in 'F:\zhigong\CS733540_20220327114826\server\client_home\src\plugins' @ ./src/main.js 5:0-32 13:8-15 ERROR in ./src/plugins/index.js 12:0-58 Module not found: Error: Can't resolve 'bootstrap-vue' in 'F:\zhigong\CS733540_20220327114826\server\client_home\src\plugins' @ ./src/main.js 5:0-32 13:8-15 ERROR in ./src/App.vue?vue&type=style&index=0&id=7ba5bd90&lang=less (../node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!../node_modules/@vue/vue-loader-v15/lib/loaders/s tylePostLoader.js!../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.store/less-loader@5.0.0/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.u se[3]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/App.vue?vue&type=style&index=0&id=7ba5bd90&lang=less) Module build failed (from ../node_modules/css-loader/dist/cjs.js): Error: Can't resolve '/css/theme.css' in 'F:\zhigong\CS733540_20220327114826\server\client_home\src' at finishWithoutResolve (F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\Resolver.js:565:18) at F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\Resolver.js:657:14 at F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\Resolver.js:718:5 at eval (eval at create (F:\zhigong\CS733540_20220327114826\server\node_modules\tapable\lib\HookCodeFactory.js:31:10), <anonymous>:16:1) at F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\Resolver.js:718:5 at eval (eval at create (F:\zhigong\CS733540_20220327114826\server\node_modules\tapable\lib\HookCodeFactory.js:31:10), <anonymous>:27:1) at F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\DescriptionFilePlugin.js:89:43 at F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\Resolver.js:718:5 at eval (eval at create (F:\zhigong\CS733540_20220327114826\server\node_modules\tapable\lib\HookCodeFactory.js:31:10), <anonymous>:15:1) at F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\Resolver.js:718:5 at eval (eval at create (F:\zhigong\CS733540_20220327114826\server\node_modules\tapable\lib\HookCodeFactory.js:31:10), <anonymous>:16:1) at F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\Resolver.js:718:5 at eval (eval at create (F:\zhigong\CS733540_20220327114826\server\node_modules\tapable\lib\HookCodeFactory.js:31:10), <anonymous>:16:1) at F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\forEachBail.js:39:13 at F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\Resolver.js:718:5 at eval (eval at create (F:\zhigong\CS733540_20220327114826\server\node_modules\tapable\lib\HookCodeFactory.js:31:10), <anonymous>:27:1) at F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\DescriptionFilePlugin.js:89:43 at F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\Resolver.js:718:5 at eval (eval at create (F:\zhigong\CS733540_20220327114826\server\node_modules\tapable\lib\HookCodeFactory.js:31:10), <anonymous>:16:1) at F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\Resolver.js:718:5 at eval (eval at create (F:\zhigong\CS733540_20220327114826\server\node_modules\tapable\lib\HookCodeFactory.js:31:10), <anonymous>:15:1) at F:\zhigong\CS733540_20220327114826\server\node_modules\enhanced-resolve\lib\DirectoryExistsPlugin.js:43:15 at process.processTicksAndRejections (node:internal/process/task_queues:88:21) @ ../node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!../node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!../node_modules/@vue/vue-loader-v15/lib/loaders/ stylePostLoader.js!../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.store/less-loader@5.0.0/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32. use[3]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/App.vue?vue&type=style&index=0&id=7ba5bd90&lang=less 4:14-464 15:3-20:5 16:22-472 @ ./src/App.vue?vue&type=style&index=0&id=7ba5bd90&lang=less 1:0-525 1:0-525 @ ./src/App.vue 3:0-75 @ ./src/main.js 2:0-28 19:17-20 webpack compiled with 4 errors
最新发布
11-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值