Webpack-网站开发-极速上手

网站开发尤其是前端页面站点开发,nodejs语言已经是必选,为了适应JavaScript的最新语法ES6/7标准,提升开发速度,一大堆辅助工具应运而生,而webpack可能是最佳选择。因为绝对多数情况,有它,就够了。

这篇文章将以最快的速度带领web开发新手进入标准开发流程。
以后有时间会慢慢整理Angular、Vue和React相关内容。


准备工作

安装nodejs

进入nodejs官网直接点击Download大按钮,下LTS稳定版。

选一个开发工具

推荐Brackets,点进去直接下载安装。免费,支持win/mac。


安装webpack

首先我们在桌面上建一个文件夹myweb作为项目,我们的网站文件都将放在这里。

启动系统命令行工具(windows下管理员权限运行命令提示符工具;mac下启动终端),用cd命令进入桌面这个文件夹(下同,不再区分win/mac,必要时尝试mac终端命令前面加sudo):
windows:

cd desktop/myweb/

然后用下面的命令把项目初始化一下,它会询问诸如项目名称、版本、作者之类信息,不用管,一路回车就好。最后在myweb生成一个package.json文件,它包含了所有nodejs需要的设置。

npm init

npm是nodejs的第三方包(插件)管理工具,如果在下面使用的时候很慢,你可以参考淘宝npm镜像的使用说明部分,然后使用cnpm命令替换下面的npm命令

使用下面的命令安装webpack,install是安装,--save-dev是把插件名webpack记录到package.json文件中,只影响dev开发环境。可能需要一会时间,成功后可以看到myweb下面多了一个node_modules文件夹,以后所有的插件npm都会装在这里,同时package.json里面也多了webpack一行

npm install --save-dev webpack

安装开发服务器dev-server

为了能够使用ES6/7新语法,又能够在老浏览器运行我们的代码,webpack可以把我们的新语法代码“编译”成老语法来运行。dev-server就是实时全自动化的编译工具。

npm install --save-dev webpack-dev-server 
npm install --save-dev webpack-cli

安装成功后,也会在node_modules里面多出文件,在package.json里面多出一行。


设置参数

在myweb目录下创建webpack.config.js文件,内容如下:

const path = require('path');
module.exports = {
    entry: './src/index.js', //入口文件
    output: {
        filename: 'bundle.js', //编译后的文件
        path: path.resolve(__dirname, 'dist')
    },
    mode: 'development',
    devServer: {
        contentBase: path.join(__dirname, "dist"), //编译好的文件放在这里
        compress: true,
        port: 9000 //本地开发服务器端口
    }
};

然后打开package.json文件,修改其中的script一段,这将让我们使用npm几个新命令(小心标点,详细语法请百度json):

    "scripts": {
        "start": "webpack --config webpack.config.js",
        "dev": "webpack-dev-server",
        "build": "webpack"
    },

创建文件

创建myweb/dist/index.html文件,内容如下,注意引入了不存在的bundle.js文件:

<!doctype html>
<html>
<head>
    <title>myweb</title>
</head>
<body>
    <script src="bundle.js"></script>
</body>
</html>

创建myweb/src/index.js文件,内容如下,注意前面webpackage.json.js中的entry入口设置的就是它:

import $ from 'jquery';
$('body').append('Hello webpack!');

这时候我们的目录结构看起来像是(这里没显示node_modules文件夹):



安装缺失的插件库

上面的js里面我们使用了jquery插件,但我们并没有在html中使用<script ..../>标签引入它,而是js中使用了import xxx from 'xxxx'这么高级的语法,但是,没有终归是不行的,我们来安装它:

npm install --save-dev jquery

更多插件请访问NPM官方网站,除了你可能熟悉jqeury、bootstrap,那里近50万的插件供你install.


启动实时服务器dev-server

一切就绪,我们执行下面的命令启动服务器:

npm run dev

注意这里的dev,就是package.json中我们设置的"dev": "webpack-dev-server",下面我们还会用到"build": "webpack"

如果没有出错,那么就成功了!注意其中的http://localhost:9000/这一行,复制它粘贴到浏览器里面就能打开我们的网页了,虽然只有一行Hello webpack!

重新启动dev-server之前你必须先关闭它!关闭方法是按两次ctrl+c。如果端口9000不被释放就会出错listen EADDRINUSE 127.0.0.1:9000,如果出错我暂时建议你重启电脑...或者自行百度如何杀死进程。


修改页面

打开index.html,把里面的Hello webpack!改为其他字符串,然后保存。

你会发现,浏览器内的页面自动刷新了!完全不需要手动去点任何按钮。这就是dev-server最美的地方。


编译项目文件

刚才打开localhost显示的是本地页面,注意index.html页面中引用的bundle.js仍然不存在(实际上它只存在于dev-server的内存里面)。
没有bundle.js我们的index.html放到远程服务器上一定会出错找不到js文件。

运行下面的命令生成bundle.js文件

npm run build

成功之后就会看到dist/bundle.js了,你可以把dist文件夹都放到远程服务器上面,就能正常访问了。


CONGRATULATIONS!你已经迈出了Web开发的第一步!
END

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容

  • 在现在的前端开发中,前后端分离、模块化开发、版本控制、文件合并与压缩、mock数据等等一些原本后端的思想开始...
    Charlot阅读 5,439评论 1 32
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 webpack介绍和使用 一、webpack介绍 1、由来 ...
    it筱竹阅读 11,116评论 0 21
  • webpack 介绍 webpack 是什么 为什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert阅读 6,463评论 2 71
  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,160评论 7 35
  • 原文首发于:Webpack 3,从入门到放弃 Update (2017.8.27) : 关于 output.pub...
    昵称都被用完了衰阅读 1,896评论 4 19