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. PHP编译选项

    PHP安装 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/u ...

  2. PHPWord使用方法

    官方文档  github地址 一.安装 直接使用composer安装,链接地址 composer require phpoffice/phpword 二.简单使用 require_once 'PhpO ...

  3. 【转】Monkey测试4——Monkey命令行可用的全部选项

    Monkey命令行可用的全部选项 常规 --help 列出简单的用法. -v 命令行的每一个-v将增加反馈信息的级别. Level 0(缺省值)除启动提示.测试完成和最终结果之外,提供较少信息. Le ...

  4. springmvc 环境配置图

  5. win7无法安装Microsoft .NET Framework 4.5\4.0

    在安装一些软件的时候,要求安装环境下必须首先安装有Microsoft .NET Framework 4.5\4.0,可是下载了安装包却怎么也安装不了,安装到一定进度就失败了,反复安装重启,都没有成功, ...

  6. Servlet 环境设置

    开发环境是您可以开发.测试.运行 Servlet 的地方. 就像任何其他的 Java 程序,您需要通过使用 Java 编译器 javac 编译 Servlet,在编译 Servlet 应用程序后,将它 ...

  7. il code swtich

    public enum RangeItemType { CompanyPicker = 1, //公司STR_COMPANY BrDivPicker = 2, //分行STR_BRDIV Depart ...

  8. ionic2常见问题-启动后白屏问题

    问题描述 app启动后大概有几秒白屏,才会显示首页,如下gif图 启动有白屏.gif 解决方法1 请查看以下3张图的标注 图 1-最初config.xml配置 图 2-更改后的splash配置 图 3 ...

  9. 如何通过Mac 下的SVN拉取代码

    背景:今天入职了一家新单位,用的svn,我之前一直用的win下的git和svn,然后我现在用自己的mac开发,所以有了标题的疑问 博文由来:看了几个博客写的都很繁琐,看半天才能解决我的疑问,所以自己写 ...

  10. linux以下C 利用openssl的AES库加密,解密

    OpenSSL提供了AES加解密算法的API const char *AES_options(void); AES算法状态,是所有支持或者是部分支持. 返回值:"aes(full)" ...