vue单页面模板说明文档(2)
Linter Configuration
This boilerplate uses ESLint as the linter, and uses the Standard preset with some small customizations.
If you are not happy with the default linting rules, you have several options:
Overwrite individual rules in
.eslintrc.js
. For example, you can add the following rule to enforce semicolons instead of omitting them:// .eslintrc.js
"semi": [, "always"]Pick a different ESLint preset when generating the project, for example eslint-config-airbnb.
Pick "none" for ESLint preset when generating the project and define your own rules. See ESLint documentation for more details.
Pre-Processors
This boilerplate has pre-configured CSS extraction for most popular CSS pre-processors including LESS, SASS, Stylus, and PostCSS. To use a pre-processor, all you need to do is installing the appropriate webpack loader for it. For example, to use SASS:
npm install sass-loader node-sass --save-dev
Note you also need to install
node-sass
becausesass-loader
depends on it as a peer dependency.Using Pre-Processors inside Components
Once installed, you can use the pre-processors inside your
*.vue
components using thelang
attribute on<style>
tags:<style lang="scss">
/* write SASS! */
</style>A note on SASS syntax
lang="scss"
corresponds to the CSS-superset syntax (with curly braces and semicolons).lang="sass"
corresponds to the indentation-based syntax.
PostCSS
Styles in
*.vue
files are piped through PostCSS by default, so you don't need to use a specific loader for it. You can simply add PostCSS plugins you want to use inbuild/webpack.base.conf.js
under thevue
block:// build/webpack.base.conf.js
module.exports = {
// ...
vue: {
postcss: [/* your plugins */]
}
}See vue-loader's related documentation for more details.
Standalone CSS Files
To ensure consistent extraction and processing, it is recommended to import global, standalone style files from your root
App.vue
component, for example:<!-- App.vue -->
<style src="./styles/global.less" lang="less"></style>Note you should probably only do this for the styles written by yourself for your application. For existing libraries e.g. Bootstrap or Semantic UI, you can place them inside
/static
and reference them directly inindex.html
. This avoids extra build time and also is better for browser caching. (See Static Asset Handling)Handling Static Assets
You will notice in the project structure we have two directories for static assets:
src/assets
andstatic/
. What is the difference between them?Webpacked Assets
To answer this question, we first need to understand how Webpack deals with static assets. In
*.vue
components, all your templates and CSS are parsed byvue-html-loader
andcss-loader
to look for asset URLs. For example, in<img src="./logo.png">
andbackground: url(./logo.png)
,"./logo.png"
is a relative asset path and will be resolved by Webpack as a module dependency.Because
logo.png
is not JavaScript, when treated as a module dependency, we need to useurl-loader
andfile-loader
to process it. This boilerplate has already configured these loaders for you, so you basically get features such as filename fingerprinting and conditional base64 inlining for free, while being able to use relative/module paths without worrying about deployment.Since these assets may be inlined/copied/renamed during build, they are essentially part of your source code. This is why it is recommended to place Webpack-processed static assets inside
/src
, along side other source files. In fact, you don't even have to put them all in/src/assets
: you can organize them based on the module/component using them. For example, you can put each component in its own directory, with its static assets right next to it.Asset Resolving Rules
Relative URLs, e.g.
./assets/logo.png
will be interpreted as a module dependency. They will be replaced with an auto-generated URL based on your Webpack output configuration.Non-prefixed URLs, e.g.
assets/logo.png
will be treated the same as the relative URLs and translated into./assets/logo.png
.URLs prefixed with
~
are treated as a module request, similar torequire('some-module/image.png')
. You need to use this prefix if you want to leverage Webpack's module resolving configurations. For example if you have a resolve alias forassets
, you need to use<img src="~assets/logo.png">
to ensure that alias is respected.Root-relative URLs, e.g.
/assets/logo.png
are not processed at all.
Getting Asset Paths in JavaScript
In order for Webpack to return the correct asset paths, you need to use
require('./relative/path/to/file.jpg')
, which will get processed byfile-loader
and returns the resolved URL. For example:computed: {
background () {
return require('./bgs/' + this.id + '.jpg')
}
}Note the above example will include every image under
./bgs/
in the final build. This is because Webpack cannot guess which of them will be used at runtime, so it includes them all."Real" Static Assets
In comparison, files in
static/
are not processed by Webpack at all: they are directly copied to their final destination as-is, with the same filename. You must reference these files using absolute paths, which is determined by joiningbuild.assetsPublicPath
andbuild.assetsSubDirectory
inconfig.js
.As an example, with the following default values:
// config/index.js
module.exports = {
// ...
build: {
assetsPublicPath: '/',
assetsSubDirectory: 'static'
}
}Any file placed in
static/
should be referenced using the absolute URL/static/[filename]
. If you changeassetSubDirectory
toassets
, then these URLs will need to be changed to/assets/[filename]
.We will learn more about the config file in the section about backend integration.
vue单页面模板说明文档(2)的更多相关文章
- vue单页面模板说明文档(3)
Environment Variables Sometimes it is practical to have different config values according to the env ...
- vue单页面模板说明文档(1)
Introduction This boilerplate is targeted towards large, serious projects and assumes you are somewh ...
- vue render {} 对象 说明文档
Vue学习笔记进阶篇——Render函数 http://www.mamicode.com/info-detail-1906336.html 深入data object参数 有一件事要注意:正如在模板语 ...
- Vue 单文件元件 — vTabs
简书原文 这是我做了第二个单文件元件 第一个在这里vCheckBox 这次这个叫vTabs,用于操作标签页 演示DEMO 演示DEMO2 - 子组件模式及别名 演示DEMO3 - 极简模式 示例: h ...
- webpack入坑之旅(五)加载vue单文件组件
这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...
- SWFUpload 2.5.0版 官方说明文档 中文翻译版
原文地址:http://www.cnblogs.com/youring2/archive/2012/07/13/2590010.html#setFileUploadLimit SWFUpload v2 ...
- 《暗黑世界GM管理后台系统》部署+功能说明文档
http://www.9miao.com/product-10-1073.html <暗黑世界GM管理后台系统>部署+功能说明文档 <暗黑世界GM管理后台系统>部署+功能说明文 ...
- BasicExcel说明文档
BasicExcel说明文档 BasicExcel原始链接:http://www.codeproject.com/Articles/13852/BasicExcel-A-Class-to-Read-a ...
- 处理 Vue 单页面应用 SEO 的另一种思路
vue-meta-info 官方地址: monkeyWangs/vue-meta-info (设置vue 单页面meta info信息,如果需要单页面SEO,可以和 prerender-spa-plu ...
随机推荐
- February 12th, 2018 Week 7th Monday
One man's fault is another man's lesson. 前车之覆,后车之鉴. We make mistakes every day, large or small, fail ...
- 17.基于scrapy-redis两种形式的分布式爬虫
redis分布式部署 1.scrapy框架是否可以自己实现分布式? - 不可以.原因有二. 其一:因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls ...
- JAVA 多线程环境下的静态方法
第一: 程序运行的时候,JVM内存主要由以下部分组成: 堆: 所有线程共享一个堆,在 Java 虚拟机中,堆(Heap)是可供各条线程共享的运行时内存区域,也是供所有类实例和数组对象分配内存的区域. ...
- ORCFILE IN HDP 2: BETTER COMPRESSION, BETTER PERFORMANCE
ORCFILE IN HDP 2: BETTER COMPRESSION, BETTER PERFORMANCE by Carter Shanklin The upcoming Hive 0.12 ...
- 官网下载Git方法
最近去官网下载Git,奇慢,下到一半直接挂掉,挂VPN也是一样 https://git-scm.com/ 今天学到一个方法,下载速度可以达到2m/s,那就是复制下载地址,用迅雷下载,可能是迅雷有P2 ...
- A. On The Way to Lucky Plaza 概率 乘法逆元
A. On The Way to Lucky Plaza time limit per test 1.0 s memory limit per test 256 MB input standard i ...
- Djangoorm的多表建立与queryset对象的合并
使用这个方法的前提是:我们用Django的orm和REST来实现的 数据库提前建好了,而且表中字段相同,但是表名是不一样.需要动态在model中建表.我们使用Book_来模拟实现的 from djan ...
- md5之守株待兔
第一个实验吧的题目,不太会做,参考了很多大佬的经验,最后发现这个题目很简单,大概这就是入门的感觉吧!如果你多次尝试点开题目给的连接,就会发现,系统的密钥一直会变,可是我的密钥却保持一个,这就让我们联想 ...
- Python写代码的用法建议
1.Mutable and immutable types Python有两种内置或用户定义的类型 可变类型是允许就地修改内容的类型.典型的可变列表是列表和词典:所有列表都有变异方法,如 list.a ...
- 第一章 mysql的体系结构与存储引擎
数据库从逻辑上可以分为两部分,一部分负责存储即文件系统,这部分有个更时髦的名字叫存储引擎,存储引擎负责如何把数据以及索引相关的内容以合适的形式组织并存储到磁盘上.另一部分为server部分,负责和用户 ...