NodeJS 第三天

241 阅读3分钟

npm补充

本质:解决Node中第三方包共享的问题,安装Node时连带一起安装的,不需要单独安装

​ npm -v 查看版本

​ npm init 初始化

​ npm install 包名 下载第三方模块

使用下载的第三方包 dayjs(处理日期时间格式)

dayjs包

const dayjs = require(`dayjs`)

console.log(dayjs().format('YYYY-MM-DD'));

nrm包(全局包)

作用:切换安装包的来源,默认是国外npm官网,速度慢。手动切换

​ 1.npm i nrm -g

​ 2.nrm ls

​ 3.nrm use taobao

错误提示:www.yuque.com/megasu/al5x…

nodemon包(全局包)

作用:自动检测代码的修改,自动重新运行。nodemon .\index.js启用

​ 1.npm i -g nodemon

​ 2.使用nodemon代替node

​ 3.nodemon .\index.js

卸载包

​ npm uninstall 包名

webpack基本概念

本质:node的一个第三方模块

作用:自动化打包代码,智能剔除和修改

注意:根目录文件不能webpack,会导致同名

1652325250948

使用步骤

​ 1.npm init

​ 2.npm install webpack webpack-cli -D

​ 3.配置scripts 在scripts里添加"build": "webpack"

​ 4.新建目录src

​ 5.新建src/add/add.js 定义求和函数导出

export const addFn = (a, b) => a + b

​ 6.新建src/index.js导入使用

import {addFn} from './add/add'

console.log(addFn(10, 20));

​ 7.运行打包命令 npm run build 或者yarn build

配置入口出口

​ 作用:从哪里开始打包,打包后输出到哪里

​ 1.新建webpack.config.js(默认) 与src文件并列同级

​ 2.填入配置

const path = require("path")

module.exports = {
    entry: "./src/main.js", // 入口
    output: { 
        path: path.join(__dirname, "dist"), // 出口路径
        filename: "bundle.js" // 出口文件名
    }
}

​ 3.修改

const path = require("path")

module.exports = {
    entry: "./src/dio.js", // 入口
    output: { 
        path: path.join(__dirname, "dist"), // 出口路径
        filename: "jojo.js" // 出口文件名
    }
}

​ 4.运行打包命令

npm run build

1652337676378

提交仓库忽略node_modules

​ 1.创建.gitignore,与src同级

​ 2.在内输入node_modules,表示提交时,忽略node文件

​ 3.上传即可

导入导出

// es6 导入方式 
import {addFn,obj} from './add/add'
import dayjs from 'dayjs'
// 默认导入
import abc from './utils/uitls'
console.log(addFn(10, 20));
console.log(obj);
console.log(dayjs().format(`YYYY-MM`));

// 导出 
export const addFn = (a, b) => a + b
export const obj = {name:`hm`}
const sayHi = () => {
    console.log('SayHi')
  }
  // 默认导出
export default sayHi
<script src="./main.js"></script>

🐇 总结

导入

​ 1.import {名称} form '模块'

​ 2.import dayjs form 'dayjs'

导出

​ export const 名称 = 数据 要配合解构导出

​ export default 默认导出 没有解构 一个js文件只能有一个默认导出

自动生成(打包)HTML,引入JS

作用: html-webpack-plugin插件, 让webpack打包后生成html文件并自动引入打包后的js

​ 1.下载包

npm install html-webpack-plugin  -D

​ 2.config配置

// 引入自动生成 html 的插件
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    // ...省略其他代码
    plugins: [
        new HtmlWebpackPlugin({
            template: './public/public.html' // 以此为基准生成打包后html文件
        })
    ]
}

​ 3.新建文件打包观察

1652344226456

1652344236498

​ 4.打包成功

1652344251395

加载器-CSS

作用:处理JS文件以外文件

原因:webpack默认只认JS/JSON文件,其他文件不认识

1652345464016

1652345229948

1.下载包 - CSSloader/style-loader

​ 作用:解析CSS原文件/自动插入文件中

npm install style-loader css-loader -D

2.config配置

const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    // ...其他代码
    module: { 
        rules: [ // loader的规则
          {
            test: /\.css$/, // 匹配所有的css文件
            // use数组里从右向左运行
            // 先用 css-loader 让webpack能够识别 css 文件的内容并打包
            // 再用 style-loader 将样式, 把css插入到dom中
            use: [ "style-loader", "css-loader"]
          }
        ]
    }

3.新建src/css/index.css

ul,li{
    list-style: none;
}

4.引入到index.js(这里是入口需要产生关系,才会被webpack找到打包)

import "./css/index.css"; // 导入css

5.跑起来

1652359854301

加载器处理less

1.下载包

npm install less less-loader -D

2.config设置

module: {
  rules: [ // loader的规则
    // ...省略其他
    {
    	test: /\.less$/,
    	// 使用less-loader, 让webpack处理less文件, 内置还会用less翻译less代码成css内容
        use: [ "style-loader", "css-loader", 'less-loader']
    }
  ]
}

注意:重名部分不要CV

3.新建src/less/index.less

@size:24px;

ul, li{
    font-size: @size
}

4.导入

import './less/index.less' // 导入less

5.跑起来

加载器处理图片上传

1.版本5不用下载,config设置在rules里

rules: [
	{
        test: /\.(png|jpg|gif|jpeg)$/i, // 匹配后缀
        type: "asset",
	},
]

2.导入大图,小图

// 插入大图
import  LOGO  from "./assets/logo_small.png";
 document.body.style.backgroundImage = `url(${LOGO})`
// 插入小图
body {
    background: url(../assets/favicon.ico);
}

3.跑起来

自动(刷新)run build

​ dist删了还是会打包上传

1.下载包

npm install webpack-dev-server -D

2.配置package.json

"scripts": {
    "build": "webpack",
    "serve": "webpack serve"
  },

3.运行指令-启动webpack开发服务器

npm run serve
#或者 yarn serve

4.config中配置

module.exports = {
  // development 开发环境
  // production  生成环境(最终用于上线的环境)
  mode: "development",
  devServer: {
  open: true, // 自动打开 浏览器
  port: 3000, // 端口号
  },

5.跑起来,只有保存,不刷新页面都会自动刷新