Web前端105天-day65-ToolChain

news2024/11/26 6:23:36

ToolChain01

目录

前言

一、Webpack

二、指南

总结


前言

ToolChain01学习开始


一、Webpack

官网:webpack

  • 浏览器仅支持: html css 和 js 三种语言
  • 实际开发中: 会使用到其他的一些语言, 例如 TS, sass, scss 等....
    • 这些语言开发起来更加方便快捷, 但是浏览器不支持 -- 需要进行转换
    • 案例: 之前书写项目时, 使用scss来书写样式, 需要live sass插件帮忙实时转换成css使用
    • 现在: 自动化的需求 -- 书写scss之后, 能全自动转为css 引入到文件中使用
  • webpack的功能之一: 把scss 或 sass 等样式 自动转为 css 文件

模块概念

  • 在 node.js 中, 大量采用模块化概念
    • 利用 require 导入其他js导出的模块
    • 优点: 有代码提示
  • web开发中, 通过 <script src="js文件" 利用脚本引入js文件
    • 缺点1: 没有代码提示
    • 缺点2: 导入有依赖时, 必须注意引入的先后关系
  • webpack 把 模块的概念 引入到了 web的开发中

自动化的插件:

  • 利用 babel 插件, 可以自动把 ES6语法转 ES6之前的旧语法, 兼容低版本浏览器


二、指南

  • 官网:指南 | webpack 中文文档
  • 新建文件夹: webpack-demo
  • npm 初始化: npm init -y

  •  安装模块:npm i webpack webpack-cli -D

  •  安装 lodash 模块

  •  配置文件
// webpack.config.js  -- 固定名称
// 配置文件 -- webpack

// webpack 默认自带一些配置, 但是针对复杂的项目需要更加个性化的配置
const path = require('path');
// 大驼峰: 这是一个构造函数/类
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  // 以下是默认的配置信息

  // entry: 入口
  // 这里设定了 webpack 要转换的文件
  // entry: './src/index.js',
  // entry: './src/demo.js',

  // 多入口:
  entry: {
    // 入口名称(name) : 对应的文件
    my_index: './src/index.js',
    my_print: './src/print.js',
    // name: value
  },

  // output: 出口
  // 设定 编译完毕的文件 存放在哪里
  output: {
    clean: true, // 先清理之前遗留的文件, 再生成新的
    // 多出口
    // [name] 代表当前导出的 入口文件的名字
    filename: '[name].bundle.js',

    // 此语法是针对单个入口
    // filename: 'bundle.js', // 导出的文件名
    path: path.resolve(__dirname, 'dist'), // 存放的目录路径
  },
  // 模式: 有两个可选值
  // development : 开发模式 -- 导出的文件内容 有注释 有格式
  // production : 产品模式 -- 导出的文件内容 带有代码压缩
  mode: 'development',
  // mode: 'production',

  // 加载器 loader 的设置
  module: {
    // 使用规则
    rules: [
      {
        // 正则验证
        test: /\.css$/i, // 忽略大小写, 如果是 .css 结尾的
        // 使用两个loader 依次加载
        use: ['style-loader', 'css-loader']
      },
      {
        test: /\.(png|jpg|svg|gif|jpeg)$/i,
        // 类型: 资源类型;  以下内容是固定的配置项
        type: "asset/resource", //按照资源类型处理
      },
      {
        // 配置文件的修改, 必须重启服务器才能生效
        test: /\.(woff|woff2|eot|ttf|otf)$/i,
        type: "asset/resource"
      },
      {
        test: /\.m?js$/,
        exclude: /(node_modules|bower_components)/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env']
          }
        }
      }, {
        test: /\.s[ac]ss$/i,
        use: [
          // 将 JS 字符串生成为 style 节点
          'style-loader',
          // 将 CSS 转化成 CommonJS 模块
          'css-loader',
          // 将 Sass 编译成 CSS
          'sass-loader',
        ],
      },
    ]
  },
  // 开发服务器
  // 在 package.json 中配置启动服务器的命令 
  devServer: {
    // 指定服务器运行后, 访问的静态目录地址
    static: './dist'
  },

  // 插件的用法
  plugins: [
    new HtmlWebpackPlugin({ title: "自动生成" })
  ]
};

// webpack命令的执行方式:
// 方式1: npx webpack    利用npx工具 执行webpack模块
// -- 不推荐 -- 直接调用node_modules 中的模块

// 方式2: 利用 npm 指定的 package.json 来配置调用方式
// -- 使用 npm run build 命令
//   告知项目包, 触发 build 脚本中的代码
// run: 运行
// build: package.json中的脚本名
  • index.js
// node.js 提供的模块化操作, 引入lodash 模块

// 这是 JS 独有的模块化引入语法
// const _ = require('lodash')   // 方言

// ES6中: 提供了新的引入写法 -- 与其他编程语言的写法统一
import _ from 'lodash'  // 普通话


// 默认仅支持 JS 文件的导入; 其他的非JS文件也会当做是JS来解析
// loader: 加载器 -- 负责加载非 JS 格式的文件
// 安装 开发时使用的 出来 内联样式 和 css 文件的加载器
// npm i -D style-loader css-loader
// 通过配置文件, 告知 webpack   .css 结尾的文件用特殊加载器.
import './my.css'

// 需要专门的loader 进行加载
// https://webpack.docschina.org/loaders/sass-loader/
// npm install sass-loader sass webpack --save-dev
import './my.scss'

// 必须单独配置加载器
// webpack默认内置了 图片的加载器, 可以直接用
import bigskin from './bigskin-1.jpg';

// 开发服务器:
// 功能类似 live server 插件
// 自动检测代码中的修改 然后 自动编译 并 刷新网页
// npm i -D webpack-dev-server
// 在配置文件中, 进行相关配置

function component() {
  // 新建 div 元素
  const element = document.createElement('div');

  element.className = 'ok'

  // 传统的web开发中遭遇的问题: 
  // _ 是什么??  哪来的??  做什么的??
  // element.innerHTML = _.join(['Hello', 'webpack'], ' ');

  // node.js 提供的模块化特色:  让代码有提示
  element.innerHTML = _.join(['Hello', 'Webpack'], ' ')

  return element;
}
document.body.appendChild(component());

// 新建图片元素
var icon = new Image(200, 100)
icon.src = bigskin
document.body.appendChild(icon)

// ES6 语法:
// 2015年6月 出品, 即在这个时间点前的浏览器版本不支持此语法
// 此时如果代码要兼容这些旧版本浏览器, 则必须把ES6语法转为普通的旧语法
// babel loader: 负责自动转换语法的 加载器

// https://webpack.docschina.org/loaders/babel-loader/
// npm install -D babel-loader @babel/core @babel/preset-env webpack
class Emp {
  constructor(name, age) {
    this.name = name
    this.age = age
  }
}

// 加载 sass 或 scss 文件
// 尝试自己阅读 loader 部分, 找到对应的加载器
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8" />
  <title>起步</title>
  <!-- lodash 脚本中提供了 _ 变量, 其中包含很多实用的 JS 方法 -->
  <script src="https://unpkg.com/lodash@4.17.20"></script>
  <script src="./src/index.js"></script>
  <!-- 
    传统的脚本开发的痛点:
    1. 没有代码提示
    2. 当在外部JS文件中, 使用到其他js文件中的代码时, 毫无依据, 无法查找
    3. 脚本间有依赖关系, 则必须注意引入顺序 -- 然后从表面 根本无法看出脚本的依赖关系

    此时: webpack 出现
    - 开发时可以通过 node.js 平台提供的模块化特征来进行代码书写
    - webpack 可以把 node.js 书写的代码 转为 普通的 js 代码

    node.js 和 浏览器 属于两个独立的平台, 其中的特性本身不互通
    webpack 可以打通差异, 实现代码的自动转换
   -->
</head>

<body>

  <script>
    console.dir(_)

    var wd = _.join(['你', '好'], '---')
    console.log(wd);
  </script>
</body>

</html>
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <!-- 模块化的语法, 是node.js平台专属的; 浏览器不支持 -->
  <!-- webpack: 负责转换 -->
  <!-- 转换命令: npx webpack -->
  <!-- npx: 会执行当前项目包中 node_modules 下的 webpack模块 -->
  <!-- 自动把 src/index.js 文件, 转换成普通的 浏览器支持的文件, 存储在 dist/main.js 中 -->
  <!-- <script src="./src/index.js"></script> -->
  <script src='./main.js'></script>

  <!-- dist目录: 应该存放编译出来的 可以运行的代码 -->
</body>

</html>


总结

ToolChain学习结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pinia 笔记

1、安装 npm i pinia -S2、创建store基本结构 1、在src下创建store文件夹并创建app.js文件&#xff0c;同时编写基本代码结构 // 引入实例化store的函数 import { defineStore } from "pinia";// 实例出一个名为app的store,那appStore是什么&#xff1f;它代表当前…

【SpringMVC】SpringMVC实现文件上传

1.一般的文件上传 1.1 文件上传的必要前提 form 表单的 enctype 取值必须是&#xff1a;multipart/form-data(默认值是:application/x-www-form-urlencoded) enctype:是表单请求正文的类型 method 属性取值必须是 Post 提供一个文件选择域<input type"file" /&…

代码随想录二刷day2

代码随想录复习 文章目录代码随想录复习209.长度最小的子数组&#xff08;滑动窗口&#xff09;76.最小覆盖子串904.水果成篮59.螺旋矩阵2螺旋矩阵1209.长度最小的子数组&#xff08;滑动窗口&#xff09; 209.长度最小的子数组 复习一下滑动窗口&#xff0c;滑窗的复杂度还是…

MySQL时间查询讲解+实战教学(查询本月、上个月、下个月等等的数据)

MySql时间查询 MySql查询当前时间 查询 年-月-日 时:分:秒 select now() 查询 年-月-日 select DATE(CURDATE()) 查询 年-月 select date_format(NOW(),%Y-%m) 查询当前年 select YEAR(CURDATE()) 查询当前月 select MONTH(CURDATE()) 查询当前日 select DAYOFMONTH(NOW()) 查…

【论文简述】Efficient Multi-view Stereo by Iterative Dynamic Cost Volume(CVPR 2022)

一、论文简述 1. 第一作者&#xff1a;Shaoqian Wang、Bo Li 2. 发表年份&#xff1a;2022 3. 发表期刊&#xff1a;CVPR 4. 关键词&#xff1a;MVS、深度学习、动态代价体、GRU、迭代优化 5. 探索动机&#xff1a;由于正则化步骤需要较多的GPU内存和处理时间&#xff0c…

大话JMeter4|不同的并发数可以自动化做压测吗?

1080709 23.5 KB 上节课爱画漫画的小哥哥用漫画形式向大家展示了JMeter的进阶用法&#xff1a;如何搭建InfluxDB&#xff0c;使用更炫酷的Grafana。 看到很多小伙伴觉得看的不过瘾&#xff0c;在强烈的催促下&#xff0c;小哥哥的新文章又出来了。这次小哥哥又给我们带来怎样的…

vue + nodejs + npm

node.js下载 1、如图所示&#xff1a; 2、建立node_cache、node_global文件夹&#xff1a; 然后运行以下2条命令 npm config set prefix “D:\node-v14.15.0-win-x64\node_global” npm config set cache “D:\node-v14.15.0-win-x64\node_cache” 执行npm list -global查看&…

编译原理——求短语、直接短语(简单短语)、素短语、句柄

先介绍一下短语、直接短语&#xff08;简单短语&#xff09;、素短语、句柄怎么求&#xff1a;这个图是核心 然后通过一些例题&#xff0c;实战一下&#xff1b; 根据上面介绍的概念、求法&#xff0c;应用一下即可&#xff1b; 例题1 短语&#xff1a;注意对于每一个子树&a…

数字孪生技术助力高炉数字化建设的可行性

随着数字孪生等新一代信息技术的快速发展&#xff0c;数字化转型已成为企业重塑竞争优势的关键举措。依托数字孪生技术&#xff0c;对炼铁高炉进行物联网、数字化信息系统建设&#xff0c;实现了高炉运行状态的数字化监测与预警&#xff0c;数字孪生系统凭借在数字化、模型化、…

利用WordPress搭建属于自己的网站

怎么用WordPress给自己搭建了一个网站&#xff1f;可能很多人都想拥有属于自己的网站&#xff0c;这篇文章就找你怎么利用WordPress搭建属于自己的网站。如果你也正好有搭建个人网站的想法&#xff0c;那么本文会给你一个参考&#xff0c;我尽量写的比较详细&#xff0c;给自己…

【Ctfer训练计划】——(五)

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右…

Java on VS Code 11月更新|VS Code Java 开发者超200万!

作者&#xff1a;Nick Zhu - Senior Program Manager, Developer Division at Microsoft 排版&#xff1a;Alan Wang 大家好&#xff0c;我们很高兴与大家分享一个好消息&#xff0c;现在 Visual Studio Code 上已有超过 200 万 Java 开发者&#xff0c;这离不开长期以来社区以…

JavaSE笔记——异常、断言

文章目录前言一、处 理 错 误1.异常分类2.声明受查异常3.如何抛出异常4.创建异常类二、捕获异常1.捕获异常2.捕获多个异常3.再次抛出异常与异常链4.finally 子句5.带资源的 try 语句三、使用断言1.断言的概念2.启用和禁用断言3.使用断言完成参数检查总结前言 在现实世界中却充…

由浅入深学安全-1

由浅入深学安全 常用术语解析 肉鸡 肉鸡也称傀儡机&#xff0c;是指可以被黑客远程控制的机器。 比如用灰鸽子等诱导客户点击或者电脑被黑客攻破或用户电脑有漏洞被种植了木马&#xff0c;黑客可以随意操纵它并利用它做任何事情。 一句话木马 一句话木马主要用来配合菜刀…

【Java系列】还在为Java运算符而烦恼吗?一篇文章带你解答心中烦恼

返回主篇章         &#x1f447; 【Java】才疏学浅小石Java问道之路 Java基本运算符1. 算数运算符分类运算法则2. 关系运算符分类注意项3. 逻辑运算符分类运算法则4. 短路逻辑运算符分类运算法则5. 赋值运算符拓展6. 三元运算符格式运算法则7. 自增自减运算符分类使用…

12-Golang中的嵌套分支以及switch语句的用法

Golang中的嵌套分支以及switch语句的用法嵌套分支基本介绍基本语法switch基本介绍基本语法流程图使用细节嵌套分支 基本介绍 在一个分支结构中又完整的嵌套了另一个完整的分支结构&#xff0c;里面的分支的结构称为内层分支外面的分支结构称为外层分支 基本语法 if 条件表达…

声明式服务调用OpenFeign

文章目录一. OpenFeign1. Feign 与 OpenFeign二. OpenFeign的使用三. OpenFeign自定义配置1. 修改日志级别2. 超时控制四. OpenFeign性能优化五. OpenFeign最佳实践1. 继承2. 抽取PS: 本文为作者学习笔记&#xff0c;实际技术参加意义不大&#xff0c;本文将持续改进完善。 一…

Doris(二)

目录1、Doris数据的导入和导出1.1 数据导入1.1.1 Broker Load1.1.1.1 适用场景1.1.1.2 基本原理1.1.1.3 基本语法1.1.1.4 导入示例1.1.1.5 查看导入1.1.1.6 取消导入1.1.2 Stream Load1.1.2.1 适用场景1.1.2.2 基本原理1.1.2.3 基本语法1.1.2.4 导入示例1.1.2.5 取消导入1.1.3 …

蓝牙耳机什么牌子好?性价比最高的蓝牙耳机排行榜

近年来&#xff0c;蓝牙耳机品牌与日俱增&#xff0c;可供人们选择的范围也越来越大。当然&#xff0c;主打性价比的蓝牙耳机品牌也有很多&#xff0c;下面&#xff0c;我来给大家分享几款性价比最高的蓝牙耳机&#xff0c;一起来看看吧。 一、南卡小音舱蓝牙耳机 售价&#…

寒潮来袭,这款产品在跨境电商市场卖脱销

年底的寒潮来袭&#xff0c;全球市场热销产品分析跨境电商在年底冬季属于销售旺季&#xff0c;大多数的跨境电商卖家们都开始尽情努力&#xff0c;争取今年获得大批收入&#xff0c;在这个年底既是旺季也是困难季。2022年底旺季时分&#xff0c;有不少产品在跨境电商市场卖脱销…