webpack+vue2构建vue项目骨架的方法


Posted in Javascript onJanuary 09, 2018

前端项目打包工具webpack与前端开发框架vue,算是现在前后端分离后非常流行的技术了,今天主要讲的是使用webpack和vue2构建一个前后端分离项目的基本骨架。虽然使用vue-cli脚手架可以帮我们搭建好一个项目骨架,但是了解原理我觉得还是很重要的,所以这篇文章主要就写webpack与vue构建一个基础项目。前提是已经安装了nodejs。

整个项目需要通过npm安装的依赖

css : style-loader、css-loader、sass-loader、node-sass

 js:babel-core 、babel-loader、babel-preset-es2015

webpack:webpack、webpack-dev-server

 vue:vuer 、vue-loade、vue-html-loader、vue-template-compiler

新建一个项目的目录

我们首先需要新建一个目录myApp用来放我们的项目,在终端里面进入这个项目,然后开始初始化项目。

初始化项目

$ npm init

初始化项目的时候,如果没有特别需要,直接按“回车键”就可以。项目初始化完成后,就会生成一个packge.json文件主要存放项目依赖目录和配置项目启动命令。

安装依赖

$ npm i style-loader --D

使用npm安装依赖的时候,我们会在最后加上“--D”,因为加“--D”后会在packge.json里面留上记录。如果我们将项目在其他系统打开时,会发现开发的时候通过npm安装的依赖不能用了,这是因为存在系统兼容性。而如果开发项目的时候安装依赖加上“--D”,项目里面的node_modules就不需要拷贝过去,而打开项目前,我们只需要通过npm安装所有依赖就可以了。

$ npm i

配置webpack.config.js文件

webpack所有的配置都在webpack.config.js文件里面,所以初始化项目后,我们需要新建一个webpack.config.js文件然后配置。由于上次已经专门写过webpack的基本配置,这儿就不重复了,直接贴上我的配置代码:

module.exports = {

 entry: './src/main.js',

 output:{

  path: __dirname + '/dist/',

  filename: 'bundle.js'

 },

 devtool:'source-map',

 devServer:{

  // 主要改变项目的根目录

  contentBase: __dirname + '/dist/',

  port:8080,

  inline:true

 },

 module:{

  loaders:[

   {test:/\.css$/,loader :'style-loader!css-loader'},

   {test:/\.js$/, loader:'babel-loader',exclude:/node_modules/},

   { test: /\.vue$/, loader: 'vue-loader' }

  ]

 },

 //vue文件想要解析必须要要加上这句才能成功

 resolve: { alias: { 'vue': 'vue/dist/vue.js' } }

}

配置package.json

package.json里面需要配置的主要时项目启动命令,一个开发模式的start和打包项目build。

webpack+vue2构建vue项目骨架的方法

启动项目

$ npm start

打包项目

$ npm run build

整个项目的目录

webpack+vue2构建vue项目骨架的方法

src:我们开发的源文件都放在这个目录里面

components:用来放所有的组件

styles:存放所有的样式文件

utils:存放所有需要自己写的方法函数

app.vue:所有的vue文件的入口文件

main.js:整个项目的js入口文件

index.html:这个文件可以放在真个项目的根目录myApp里面,也可以放在webpack打包的生成的目录dist里面,如果是放在根目录则webpack.config.js里面的contentBase: __dirname ,如果在dist里面则contentBase: __dirname + '/dist/'。主要改变项目的服务根目录的位置,就是我们localhos:8080打开时浏览器显示的目录。(经过测试放在打包生成的dist目录会好些,主要在开发模式可以实现实时更新。这个可能不太准,后期再测试后进行修改)

index.html文件代码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>webpack+vue</title>
</head>
<body>
 <div id="app"></div>
 <script src="./bundle.js"></script>
</body>
</html>

main.js文件代码

//引入vue框架<br>
//import是es6的写法,其实和var Vue = require('vue')是相同的意义<br>import Vue from 'vue';<br>
//引入App.vue文件,这个文件也是vue所有组件的入口,我们的项目就是将这个文件追加到index.html文件里面
import App from './App.vue';
new Vue({
 el:'#app',
 components: {App},<br>//主要目点就是将App追加到“#app”里面去
 render: h => h(App)
}) 
App.vue文件代码
<template>
  <div>Hello VueJS!</div>  
</template>
<script>
 export default{
   name:"app"
  }
</script>

到这儿整个项目基本上就完成了基本的结构,在浏览器输入:localhost:8080,就可以看到显示:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
Jan 27 Javascript
jQuery当鼠标悬停时放大图片的效果实例
Jul 03 Javascript
js冒泡法和数组转换成字符串示例代码
Aug 14 Javascript
javascript跨浏览器的属性判断方法
Mar 16 Javascript
Jquery响应回车键直接提交表单操作代码
Jul 25 Javascript
javascript实现简单的进度条
Jul 02 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
Apr 29 Javascript
最简单的tab切换实例代码
May 13 Javascript
用JS中split方法实现彩色文字背景效果实例
Aug 24 Javascript
如何从0开始用node写一个自己的命令行程序
Dec 29 Javascript
JS实现长图上下滚动效果
Mar 19 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
Oct 30 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
Jan 09 #Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
Jan 09 #Javascript
Gulp实现静态网页模块化的方法详解
Jan 09 #Javascript
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
Jan 09 #Javascript
利用jqprint插件打印页面内容的实现方法
Jan 09 #Javascript
react-router v4如何使用history控制路由跳转详解
Jan 09 #Javascript
基于vue-ssr服务端渲染入门详解
Jan 08 #Javascript
You might like
php网站地图生成类示例
2014/01/13 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
php实现通过ftp上传文件
2015/06/19 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
基于jquery循环map功能的代码
2011/02/26 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
python单线程实现多个定时器示例
2014/03/30 Python
Python实现大文件排序的方法
2015/07/10 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
python中的闭包函数
2018/02/09 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
请说出以下代码输出什么
2013/08/30 面试题
工业自动化毕业生自荐信范文
2014/01/04 职场文书
打架检讨书800字
2014/01/10 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript
Python 绘制多因子柱状图
2022/05/11 Python
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS