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 相关文章推荐
屏蔽Flash右键信息的js代码
Jan 17 Javascript
javascript权威指南 学习笔记之变量作用域分享
Sep 28 Javascript
JS获取页面窗口大小的代码解读
Dec 01 Javascript
浅谈JavaScript Array对象
Dec 29 Javascript
js实现的二级横向菜单条实例
Aug 22 Javascript
使用JQuery 加载页面时调用JS的实现方法
May 30 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
Nov 02 Javascript
jquery对象与DOM对象转化
Feb 08 Javascript
浅谈vue实现数据监听的函数 Object.defineProperty
Jun 08 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
Aug 10 Javascript
Vue.Draggable拖拽功能的配置使用方法
Jul 29 Javascript
ES6箭头函数和扩展实例分析
May 23 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
重置版战役片段
2020/04/09 魔兽争霸
php中count获取多维数组长度的方法
2014/11/03 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
js实现简单的秒表
2020/01/16 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
python实现矩阵打印
2019/03/02 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
乡镇消防工作实施方案
2014/03/27 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
对学校的意见和建议
2015/06/04 职场文书
2015年教师国培感言
2015/08/01 职场文书
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis