eslink:规范es6的代码风格检测工具。
npm install node-sass -g :全局安装,即使安装之后可以全局使用dode-sass,不用进到工具目录。
.babel:把es6转换成es5,因为很多浏览器不支持es6.
.editorconfig:编辑风格 html是入口文件。 package.json:
"scripts": { //配置一些脚本
"dev": "node build/dev-server.js",
"build": "node build/build.js",
"lint": "eslint --ext .js,.vue src"
},
npm run dev:执行的就是node build/dev-server.js
npm run build:执行的就是node build/build.js
dev指的是config/index.js里面的dev
dev: {
env: require('./dev.env'),
port: 8081, //端口
autoOpenBrowser: true,
assetsSubDirectory: 'static',
assetsPublicPath: '/', //静态资源的路径
proxyTable: {
'/api': {
changeOrigin: true,
target: 'http://127.0.0.1:3000',
pathRewrite: {
'^/api': '/api'
}
}
},
"devDependencies": {} : 是编译过程的一些依赖 html是入口文件。

js和css是会动态插入到这个页面的,入口的js是main.js,第一个组件是App.vue,App.vue由template、script、style组成。 

热部署是webpack的。

编写一个cartcontrol.vue组件要template、script、style,并且export default公布出去,在使用的地方 import cartcontrol from 'components/cartcontrol/cartcontrol';就把刚才那个组件导入进来,
components: {
cartcontrol, //并且还要注册
},
完了之后就可以<cartcontrol :food="food"></cartcontrol>使用导入进来的组件了。
所以index.html可以使用<App></App>,因为main.js导入App.vue了并且注册了App:components: {App},App.vue里面导出了export default 。 生产环境的代码不会这么大。
webpack是前端构建工具,把前端页面打包最后出来.js.css.png文件。 webpack是如何做编译的: npm run dev执行的是node build/dev-server.js命令,运行的是build目录下的dev-server.js文件,
dev-server.js文件:
var path = require('path') :提供文件路径操作的方法
var express = require('express') :express是一个nodejs框架,用它启动一个webserver
var webpack = require('webpack') : webpack是核心编译工具
var config = require('../config') :是一个配置文件,config目录
var proxyMiddleware = require('http-proxy-middleware') : 协议代理的中间件
var webpackConfig = require('./webpack.dev.conf') : webpack的配置 webpack.dev.conf.js:
var merge = require('webpack-merge') : 用来合并配置文件用的
var utils = require('./utils') :一些工具方法
var baseWebpackConfig = require('./webpack.base.conf') : webpack配置文件,是被开发时dev和运行时prod的配置共享的。
var HtmlWebpackPlugin = require('html-webpack-plugin') : webpack提供操作html文件的插件 webpack.base.conf.js
var projectRoot = path.resolve(__dirname, '../') : 项目的根目录
module.exports = { entry: { app: './src/main.js' //webpack编译的入口js文件是main.js },
output: { path: config.build.assetsRoot, //输出的文件路径, 对应config/index.js里面
publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath, //请求的静态资源的绝对路径,
对应config/index.js里面
filename: '[name].js' //输出的文件名称,
name就是entry的key,输出就是app.js,所以页面中可以引用app.js,
},
resolve: { extensions: ['', '.js', '.vue'], //模块导入require、import的时候可以自动补全文件后缀,
fallback: [path.join(__dirname, '../node_modules')], //找不到模块的时候就去node_modules找这个模块
alias: { // 'vue$': 'vue/dist/vue',
'src': path.resolve(__dirname, '../src'),
'common': path.resolve(__dirname, '../src/common'),
'components': path.resolve(__dirname, '../src/components') } },
resolveLoader: { fallback: [path.join(__dirname, '../node_modules')] //找不到模块的时候就去node_modules找这个模块 }, module: { loaders: [
{ test: /\.vue$/, loader: 'vue' //vue文件用vue loader处理
}, {
test: /\.js$/, loader: 'babel', include: projectRoot, exclude: /node_modules/
}, {
test: /\.json$/, loader: 'json'
}, {
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, loader: 'url', query: { limit: 10000, //小于10Kb时候
name: utils.assetsPath('img/[name].[hash:7].[ext]') } }, { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, loader: 'url', query: {
limit: 10000, name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}
]
}, config/index.js:
build: { assetsRoot: path.resolve(__dirname, '../dist'), //会创建dest目录作为输出的目录,
assetsPublicPath: '/', //静态资源在根目录的路径,
npm run build : 执行的是config/index.js里面的
build: {
env: require('./prod.env'),
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
productionSourceMap: true,
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report
}, 会生成dist目录,放入apache服务器就可以了。
Npm run dev是开发时候用到的,会再内存使用webpack,不现实的。

vue 项目结构说明的更多相关文章

  1. vue项目结构

    前言 我在 搭建vue项目环境 简单说明了项目初始化完成后的目录结构. 但在实际项目中,src目录下的结构需要跟随项目做一些小小的调整. 目录结构 ├── src 项目源码目录 │ ├── api 所 ...

  2. Vue项目结构梳理

    Vue项目结构图: 简单介绍目录结构 build目录是一些webpack的文件,配置参数什么的,一般不用动 config是vue项目的基本配置文件 node_modules是项目中安装的依赖模块 sr ...

  3. 使用Vue脚手架(vue-cli)从零搭建一个vue项目(包含vue项目结构展示)

    注:在搭建项目之前,请先安装一些全局的工具(如:node,vue-cli等) node安装:去node官网(https://nodejs.org/en/)下载并安装node即可,安装node以后就可以 ...

  4. TypeScript编写Vue项目结构解析

    使用TypeScript编写Vue项目也已经有了一段时间,笔者在刚刚使用TypeScript时候也是很茫然,不知道从何下手,感觉使用TypeScript写项目感觉很累赘并不像JavaScript那么灵 ...

  5. 03 vue项目结构

    上一篇已介绍根据vue-cli创建项目,本篇介绍根据vue-cli官方脚手架创建的项目的项目结构. 一.图看结构 build  [webpack配置]         webpack相关配置,都已经配 ...

  6. Vue 项目结构介绍

    Vue 项目创建完成后,使用 Web Storm 打开项目,项目目录如下: build 文件夹,用来存放项目构建脚本 config 中存放项目的一些基本配置信息,最常用的就是端口转发 node_mod ...

  7. 13: vue项目结构搭建与开发

    vue其他篇 01: vue.js安装 02: vue.js常用指令 03: vuejs 事件.模板.过滤器 目录: 1.1 初始化项目 1.2 配置API接口,模拟后台数据 1.3 项目整体结构化开 ...

  8. vue项目结构搭建

    1安装node.js,已集成npm 2.临时使用淘宝镜像 npm --registry https://registry.npm.taobao.org install express 3.instal ...

  9. Vue项目结构说明

    简单介绍目录结构 http://blog.csdn.net/u013778905/article/details/53864289 (别人家的链接,留给我自己看的)

随机推荐

  1. 不再为无限级树结构烦恼,且看此篇s

    很久都没有写点什么出来分享了,最近在做多级树的时候,发现来来回回写过很多遍,于是封装成用户控件,以方便日后重复使用. 首先上效果: 我们看到以上2种效果,都是支持任意级的,这里源码中使用的是递归,以便 ...

  2. JS方法代理

    作者:Jiang, Jilin JS作为一门脚本语言.十分easy上手.外加其灵活性,能够轻而易举地扩展功能.今天,我们就聊聊JS的方法代理. 方法代理是脚本语言中常见的方法扩展形式.这样的灵活的形式 ...

  3. asp.net *.ashx类型的文件使用说明

    你想创建一个ASP.NET文件,它不是aspx文件,它能动态的返回一个图片.XML文件或其他非HTML文件. 解决方案:使用ashx文件. 1. 使用ASHX handlers 首先,我们要回顾要使用 ...

  4. OBS (open boardcast server)结构分析

    一,简介 OBS(open boardcast server),是一个用于直播的开源软件. 官方网站:https://obsproject.com/ 代码托管地址:https://github.com ...

  5. react import改为绝对路径

    最近在使用react时发现路径用../../很不方便,特别是修改项目结构时,加减../都能改到吐血, 所有在网上找了半天webpack的配置,特此记录下 module.exports = (webpa ...

  6. 解决java.lang.NoClassDefFoundError错误

    昨天在开发过程中,导入同事的一个服务到本地,首先从git上把项目拉下来,然后使用maven导入eclipse,然后build. build的过程中在项目的一个测试类里面报错 java.lang.NoC ...

  7. 1878: [SDOI2009]HH的项链

    1878: [SDOI2009]HH的项链 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 4420  Solved: 2199[Submit][Statu ...

  8. undefined let 作用域

    const o = {uid:123,pid:'wwww'}const wxPayNotifyUrlBizInfo = (o) => { // TODO json let s = '' for ...

  9. Linux学习拾遗

    一.安装iso文件 首先建立一个目录作为挂载点:# mkdir /mnt/iso 获得root权限然后使用下面的参数挂载ISO映像文件:# mount -t iso9660 /path/image.i ...

  10. 线程锁、threading.local(flask源码中用的到)、线程池、生产者消费者模型

    一.线程锁 线程安全,多线程操作时,内部会让所有线程排队处理.如:list/dict/Queue 线程不安全 + 人(锁) => 排队处理 1.RLock/Lock:一次放一个 a.创建10个线 ...