webpack+webpack server入门

1.webpack介绍

webpack是一个模块加载器兼打包工具。它是以 commonJS 的形式来书写脚本的,但对 AMD/CMD 的支持也很全面,方便旧项目进行代码迁移。支持对react热插拔。

2.安装(使用淘宝镜像)

全局安装

cnpm install webpack -g

局部安装(安装在项目根目录下)

首先,自动生成package.json文件

cnpm init
cnpm install webpack --save-dev

入门注意事项:
1. package.json文件配置这项目的所有依赖。 可参考:npm 依赖详解。
2. 创建练习项目的时候可以不必介意这些属性的配置,全部默认即可,实际项目使用还请遵照规则。
3. package.json文件中不能存在注释,否则会编译报错。

项目配置

每个项目都必须有一个webpack.config.js配置文件。包含了webpack的配置信息。

var webpack = require('webpack');
module.exports = {
    //2、进出口文件配置
    entry:__dirname+'/src/entry.js',//指定的入口文件,“__dirname”是node.js中的一个全局变量,它指向当前执行脚本所在的目录
    output: {//输出
        path: __dirname+'/public',//输出路径
        filename: 'bundle.js'//输出文件名
    },
    module: {//在配置文件里添加加载器说明,指明每种文件需要什么加载器处理
        loaders: [
            {//json加载器
                test: /\.json$/,
                loader: "json-loader"//注意-loader不能省略,网上说能省略,经测试编译会报错
            },
            {//5、编译es6配置
                test:/\.js$/,
                exclude:/node_modules/,
                loader:'babel-loader',//在webpack的module部分的loaders里进行配置即可
                query:{
                    presets:['es2015','react']
                }
            },
            {//3、CSS-loader
                test:/\.css$/,
                loader:'style-loader!css-loader'//添加对样式表的处理
            }

        ]
    },
    //4、服务器依赖包配置
    devServer: {//注意:网上很多都有colors属性,但是实际上的webpack2.x已经不支持该属性了
        contentBase: "./public",//本地服务器所加载的页面所在的目录
        historyApiFallback: true,//不跳转
        inline: true//实时刷新
        //hot:true,//不要书写该属性,否则浏览器无法自动更新
        //publicPath:"/asses/",//设置该属性后,webpack-dev-server会相对于该路径
    },
    plugins:[]//插件
}

测试验证,在控制台输入:

webpack

将会打包一个js文件,上面打包的文件为public/bundle.js,会自动读取webpack.config.js作为打包配置。

webpack执行参数

webpack --config XXX.js   //使用另一份配置文件(比如webpack.config2.js)来打包
webpack --watch    //监听变动并自动打包
webpack -p     //压缩混淆脚本,这个非常非常重要!
webpack -d     //生成map映射文件,告知哪些模块被最终打包到哪里了其中的 
webpack --progress    //显示进度条
webpack --color    //添加颜色

webpack-dev-server

webpack-dev-server是一个小型的nodejs express服务器,很适合做本地测试服务。

本文以webpack-dev-server 5.x作为示例

安装

cnpm install webpack-dev-server --save-dev

配置

  1. 在webpack.config.js中有devServer属性可配置webpack-dev-server。

通常情况下我们仅需设置static属性,指定打包后的入口文件位置,默认其为public,一般保持和output的path属性相同即可,根据实际项目的输出地址为主。

在这里插入图片描述
2. 在package.json中配置快捷执行命令

webpack server的启动命令为npx webpack serve,命令参数可参考:webpack-cli

在这里插入图片描述
3. 在终端输入npm run start启动项目

启动成功后会出现如下的提示,此时我们就可以直接访问http://localhost:8080/进行测试了。

在这里插入图片描述

当然你也可以直接执行npx webpack serve --config webpack.config.js ,效果一样。

webpack-dev-server 2.x与5.x的区别

1. 启动指令

2.x 版本启动命令为:

webpack-dev-server

5.x版本的启动指令为:

npx webpack serve

2. 静态资源根目录

两者的默认启动的根目录均为当前目录下的public文件夹,但是:
2.x通过contentBase属性来设置。

 devServer: {
      contentBase: path.resolve(__dirname, 'dist'),
 }

5.x通过static属性来设置。

 devServer: {
      static: path.resolve(__dirname, 'dist'),
 }

3. 刷新机制

5.x版本已默认会自动刷新页面
2.x 支持2种刷新模式。

iframe模式

使用该模式不需要任何配置,只需要以如下url格式访问即可:

http://host:port/webpack-dev-server/path

例如:http://localhost:8080/webpack-dev-server/index.html

inline模式

inline模式访问路径为:

http://host:port/path

例如:http://localhost:8080//index.html

启动方式有2种方式:

  • webpack-dev-server --inline
  • 在webpack.config.js中添加devServer:{inline:true}

inline属性在5.x版本已被废弃

需要注意,如果是以Node.js API启动webpack-dev-server时,我们需要做如下变更,因为nodejs 中不支持online属性:

  1. webpack-dev-server/client?http://«path»:«port»/添加到webpack配置的entry入口点中,例如:
module.exports = {
        entry: {
            app: [
                'webpack-dev-server/client?http://localhost:8080/',
                '.c/js/index.js'
            ]
        },
        output: {
            path: './dist/js',
            filename: 'bundle.js'
        }
    }
  1. <script src="http://localhost:8080/webpack-dev-server.js"></script>添加到html文件中

示例

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis-数据类型-Set(不允许重复)

文章目录 1、查看redis是否启动2、通过客户端连接redis3、切换到2数据库4、给key指定的set集合中存入数据&#xff0c;set会自动去重5、返回可以指定的set集合中所有的元素6、返回集合中元素的数量(set cardinality)7、检查当前指定member是否是集合中的元素8、从集合中删除元素…

数学类-课程资料推荐-中科大教师首页

http://staff.ustc.edu.cn/~rui/cn/rui-course.html 数学分析讲义&#xff08;第一册&#xff09; (ustc.edu.cn)

BIO、NIO编程深入理解与直接内存、零拷贝

网路编程基本常识 一. Socket 什么是Socket Socket是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。它提供了应用层进程利用网络协议交换数据的机制&#xff0c;是应用程序与网络协议栈进行交互的接口。 说白了&#xff0c;Socket就是把TCP/IP协议族进行封装…

数通云网架构师涨薪班毕业都有哪些工作企业和岗位?

数通云网架构师涨薪班课程学完后&#xff0c;学员具备全行业全场景交付数通项目的能力&#xff0c;胜任企业网&#xff0c;广域网&#xff0c;数据中心网络等各种网络项目的交付能力&#xff0c;技术能力一项能够匹配年薪达30w-40w以上网络工程师岗位。 与誉天进行人才培养&…

Wordpress图像编辑插件-palleon v3.8.1中文版语言包

Palleon是一个强大的WordPress图像编辑器&#xff0c;可以与您的WordPress网站无缝集成&#xff0c;让您快速高效地工作。它拥有为你的WordPress网站创建令人惊叹的图像所需的一切。 Palleon让您完全控制图像&#xff0c;允许您逐个像素进行更改。您可以轻松地裁剪、调整图像大…

Android jetpack Room的简单使用

文章目录 项目添加ksp插件添加 room 引用开始使用room1. 创建bean2. 创建 dao类3. 创建database类 数据库升级复制数据库到指定路径参考文献 项目添加ksp插件 注意&#xff0c;因为ksp插件 是跟项目中使用的kotlin的版本要保持一致的&#xff0c;否则会报错的 首先我们去 https…

高德.js2.0绘制多条折线(轨迹)及清除所有折线

2.0版本的地图,需要绘制多条折线的时候,就需要循环生成,因此也需要循环清除 for (let j 0; j < combinedArray.length; j) {const item combinedArray[j];this.polyline new AMap.Polyline({map: this.map,path: item,showDir: true,strokeColor: "#28F", //线…

免费Logo在线生成:必试的6款工具

logo对企业来说非常重要。一个好的logo免费设计在线生成器往往会给企业带来无形的利润。因此&#xff0c;许多企业非常重视自己公司的logo。作为一名设计师&#xff0c;如果能找到一个好的logo免费设计在线生成器&#xff0c;势必会给实际的logo设计带来事半功倍的效果。本文精…

软件测试面试题:Web View如何测试?

Web View介绍 Web View&#xff08;网页视图&#xff09;是一种用于在应用程序中显示网页内容的组件或控件。提供了一种将网页内容嵌入到应用程序中的方式&#xff0c;使用户能够在应用程序中浏览和交互网页。 Web View通常用于开发移动应用程序&#xff0c;特别是混合应用程…

Docker构建多平台镜像

docker的多架构镜像构建 目前很多服务器都是基于arm架构的&#xff0c;而现在大多数的docker镜像都是基于x86架构的。一种情况就是同样的代码编译成业务包做成镜像需要部署在不同架构的服务器上&#xff0c;这个时候我们就可以使用docker的多平台构建了。 以下操作是在centos7.…

Github 2024-06-21 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-21统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目3Python项目3Java项目2非开发语言项目2JavaScript项目1Rust项目1Dart项目1HTML项目1Vue项目1C++项目1TensorFlow: 机器学习的开源…

软件自动化测试有哪些流程?可替代手工测试吗?

随着科技的不断发展&#xff0c;软件在我们生活中的地位越来越重要。然而&#xff0c;在软件开发过程中&#xff0c;必然会出现各种各样的问题和bug&#xff0c;为了提高软件的质量和稳定性&#xff0c;保证用户的使用体验&#xff0c;软件自动化测试应运而生。 那么&#xff…

什么是 Azure OpenAI?

目录 一、说明 二、什么是 Azure OpenAI 2.1 网络结构 2.2 、为什么使用 Azure OpenAI 2.3 如何使用 Azure OpenAI 三、从哪里开始 Azure OpenAI 之旅 3.1 关于 Azure OpenAI&#xff0c;我还需要了解什么 3.2 RBAC 权限和角色 3.3 演示 1&#xff1a;在公共数据上应用…

OpenAI封锁中国?国产大模型开启价格战?收好这份LLM选购指南,带你搞定极致性价比 | ShowMeAI

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; 1. Cloud LLM capability, cost, performance | 一份开发者最实用的大模型「性价比」计算手册 这是 Harlan Lewis 整理的大语言模型 (LLM) 对比清单…

深入浅出:npm常用命令详解与实战

theme: smartblue npm是什么 npm&#xff08;Node Package Manager&#xff09;是Node.js平台的默认包管理器&#xff0c;它让JavaScript开发者能够轻松地共享、管理和使用彼此编写的代码模块。npm不仅仅是一个安装工具&#xff0c;它还是一个全面的生态系统&#xff0c;用于发…

为什么要本地化您的多媒体内容?

当我们访问网站、应用程序和社交媒体时&#xff0c;体验不再局限于陈旧的文本和静态图像。现代处理能力和连接速度提高了快速加载视频、音频和动画的可能性。 这一切都提供了更具沉浸感和互动性的用户体验。多媒体是数字营销中最有效的内容之一&#xff0c;因为它对用户更具吸…

笔记本电脑录屏,教你3个方法,简单录屏

随着科技的飞速发展&#xff0c;笔记本电脑录屏功能已经不再局限于传统的录制需求&#xff0c;而是成为了探索屏幕动态的新方式。无论是创意工作者、游戏爱好者还是日常办公者&#xff0c;都可以借助这一功能&#xff0c;将屏幕上的精彩瞬间、重要信息或创新思路记录下来&#…

记录跨度3年的SqlServer数据同步项目分析

目录 技术选型决策阶段 发布订阅 自定义开发 Datax Datax废除主外键关系和自增ID ER模型分组 废掉库表主外键 维度划分Datax任务 基于ID同步 基于TIME时间同步 基于全表ALL同步 废掉自增ID DataX废除主外键关系手动拷贝 手动拷贝 Datax任务分组触发器 Datax全表…

基于Java微信小程序自驾游拼团设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

深度学习11-20

1.神经元的个数对结果的影响&#xff1a; &#xff08;http://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html&#xff09; &#xff08;1&#xff09;神经元3个的时候 &#xff08;2&#xff09;神经元是10个的时候 神经元个数越多&#xff0c;可能会产生…