视频笔记:webpack+vue打造TODO应用

视频课地址:挺适合我这种webpack废柴的。还有建议两倍速

https://www.imooc.com/video/16403

我的学习方法:先是看一遍视频看到了2-3,然后重头看,边看边照着敲代码。有问题调试。最后一遍写笔记。保证自己看着这篇笔记能把整个看过的课串起来。

啊!啥时候我也能到了“出个课”的水平。这些老师都是男的语速也有点慢啊。话说最近看的B站影视剧评大UP主,也都是男的……也许等技术到了,改改啰嗦的毛病……嗯这辈子怕是不可能开课了……

1、新建文件夹后,先在该文件目录下执行:

~npm init

会生成一个package.json文件

 

2、然后学习配置webpack和vue,就需要安装依赖包:(没有区分devdependence和dependence)

~npm i webpack vue vue-loader

 

3、会有一个这样的警告:npm WARN vue-loader@15.9.3 requires a peer of css-loader@* but none is installed. You must install peer dependencies yourself.

!*缺啥装啥就完了

~npm i css-loader //虽然没报错提示但是这里就可以安vue-template-compiler

 

4、新建文件夹src,里有文件app.vue。并写上模板内容

 

5、vue组件不能直接使用,所以需要配置webpack(新建个配置文件完事)把前端不同的资源打包。因为是整个js放到浏览器去渲染页面,所以需要用index.js作为入口文件

 

○新建webpack配置文件。webpack.config.js。这是“作为输入的js文件”,webpack会把输入的文件,包括该文件所依赖的包,都可以打包成完整的bundle.js文件,变成能够在浏览器里直接运行的代码。

 

把输入文件放到入口参数里,需要写绝对路径。

 

import path是必须的。为了设置entry和output嘛——输入指定文件,输出指定位置和文件名。__dirname这个参数就是是本文件(webpack.config.js)所在的绝对路径,join一下就是把路径和文件名拼接的意思。

 

○新建入口文件 index.js。导入所需的依赖,比如Vue啊app的。还有new一个Vue对象。把vue组件里的代码渲染&挂载。部分代码如下:(关键是想把注释贴出来,所以root定义没有贴代码)

new Vue({ render: (h) => h(APP)//h参数是vue里的create App参数。把App挂载到HTML里.App 来着vue文件。这是需要挂载的内容
 }).$mount(root)//这一步挂载到HTML节点。root就是被挂载的节点。来着body里的子节点

 

配置package.json文件,添加build选项。——这样就能调用项目里的webpack。且如果直接在命令行输入webpack命令会调用全局webpack,可能和项目里的版本不一致。

 

webpack只支持js 的ES5语法,因为不认识vue,所以需要安装一些loader,去处理webpack不认识的语法的工具。因为vue-loader是 15之后的版本,需要安装一个叫做 VueLoaderPlugin 的插件.还需要配置css-loader。

const VueLoaderPlugin = require('vue-loader/lib/plugin')//vue-loader是 15之后的版本,需要这里①

loader咋配置嘞?上代码吧还是……

plugins:[ new VueLoaderPlugin()//vue-loader是 15之后的版本,需要这里② 
        ], 
module: {//帮助webpack去识别它不认识的语法 
    rules: [//这个参数是webpack3以后的还是咋?网上有人因为版本太新运行不了公司项目,把这个rules改为啥来就行。我忘了哈哈哈
             { 
                test: /\.vue$/,//检测文件类型。嘿!千万别加引号!别忘了转义符! 
                loader: 'vue-loader'//webpack就有vue-loader来为webpack处理.vue文件类型                     
             },{//这里也得写上③ 
                test:/\.css$/, 
                use: ['style-loader', 'css-loader'] 
             },{//这个是处理图片的,demo项目开始可不加,但是谁公司项目还没个图片了?加,就完事 
                test: /\.(gif|jpg|jpeg|png|svg)$/, 
                use: [//这里的use数组为啥能加对象,因为每个loader都可以加配置项,上面CSS不需要所以直接数组了
                        { 
                            loader: 'url-loader',//一会别忘安该loader 
                            options: { 
                                        limit:1024,//限制大小 
                                        name: '[name]-aaa.[ext]'//设定名字,不然每个图都一个名闹心不 
                                      }  
                        }
                     ]
            },{//CSS预处理器 
                test: /\.styl/, 
                use: [ 'css-loader', 'stylus-loader' ] 
            },{ 
                test: /\.s[ac]ss$/i, 
                use: [ 'style-loader', 'css-loader', 'sass-loader' ] 
            } 
          ] 
        }

 

!注意:这里因为版本和细节问题报了好多回错,我差点要放弃。又特*的不甘心……最后终于找到症结所在,如释重负。

所以啊,“被代码整疯”与“代码世界舍我其谁”的感觉,相差也许不远。癫狂也在一念之间。尤其要是被算法虐一虐,啧啧。酸爽!

 

5、配置完了安装下,安好了再npm run build

~npm i vue-loader-olugin -s

 

还不能忘了安装

~npm i vue-template-compiler

 

6、再加上关于图片的处理,需要啥loader就安上

~npm i vue-style-loader url-loader file-loader

 

7、CSS预处理器,stylus

~npm i stylus-loader stylus

 

延伸到sass等的loader都可以这样引入。去webpack官网搜"相应名字-loader"就行

 

8、安装:

~npm i webpack-dev-server



~npm i cross-env (设置环境变量)

 

package.json里设置dev选项,就是关于dev-server的配置

 

同时在webpack.config.json里设置。因为是前端项目所以target是web。还需要设置在开发环境和生产环境的不同的环境变量。

 

写上环境变量就可以在不同平台执行相同的脚本。(node和windows就不一样)

package.json

"build": "cross-env NODE_ENV=production webpack --config webpack.config.js", 
"dev": "cross-env NODE_ENV=development webpack-dev-server --config webpack.config.js"

 

webpack.config.js

const isDev = process.env.NODE_ENV == development; 
if(isDev){ 
    config.devServer = {//webpack2以后 
                            port: 8080, 
                            host: '0.0.0.0',//可以通过本机IP来访问,比如可以用手机去链接电脑调试 
                            overlay: { 
                                        errors: true //这个可以把webpack打包后的错误输出到页面 
                                      } 
                        } 
}

 

package.json里设置的环境变量名全部存在于process.env对象里,可以设置多个变量名,都能取到。

 

之前webpack.config.js的一顿操作,什么设置输入和输出文件啊,配置loader啊的都放到config对象里。最后:

module.exports = config;

 

为啥放到一个对象config里嘞,还不是为了在开发环境下配置一些端口啥的,方便调试。如果是开发环境,给config添加一个属性叫devServer然后一顿操作……

 

注:视频笔记到2-3前半部分。待更新……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值