脚手架渲染原理:
下面是翻译:来源于http://vue-loader.vuejs.org/en/workflow/testing.html
*.vue
每个.vue文件由3个顶级标签组成。 <template> <script> <style>
vue-loader会解析该文件, pipe他们去别的loader,最终把他们声明为一个commonjs的组件,它的module.exports是一个组件对象。
类似下面:
其实就是一个普通的包含某些特殊key的js对象
vue-loader支持使用非默认语言,比如能编译为html的模板语言,通过设置语言标签块的lang属性 。比如你可以想下面这样设置后使用sass语言:
<template> 默认是html语言 每一个*.vue文件最多只能包含一个template标签 内容会被解析为一个字符串, 被用作编译出来的组件的template 选项 <script> 执行在commonjs环境中,故可以使用rquire来获得其他依赖。并且因为es2015的支持,可以使用import 和export语法 该script一定要导出一个vue的组件的配置对象,一个普通的js对象被支持 <style> 默认是css语言,多个style标签是被支持的
也可以把一个组件拆分为不同的文件,然后还有src 属性来导入不同的部分
es2015
如何导入一个模块
此时你可以在组件内部使用 <complate-a>组件 .js 文件vue-loader默认也会为你编译
scoped css
当一个style标签用于scoped属性时,它的css属性将会只被该组件所拥有,默认是加了一个随机的id
会被编译为:
Hot Reload
热重载不仅仅是当你编辑一个.vue文件时,在不重载整个页面的情况下把你的页面里面的那个组件实例给替换掉,它甚至保存着你的应用和组件的当前状态
使用loader
vue-cli会自动根据lang属性调用对应的loader来处理 例如 如果要使用sass的haul
JavaScript会默认调用babel-loader来处理 当然你可以改变它:
npm install sass-loader node-sass --save-dev
<style lang="sass">
/* write sass here */
</style>
html的话 因为是返回一个函数,而不是一个字符串 所以:
URL Handling
background:url和img src css @import都会被当做一个模块依赖 比如url('a.png')会被翻译为requrie('a.png')
<img src="../image.png">
会变为:
createElement('img', { attrs: { src: require('../image.png') }})
因为.png不是一个js文件,所以你需要安装file-loader去处理他们。vue-cli也已经给你设置好了
好处
file-loader allows you to designate where to copy and place the asset file, and how to name it using version hashes for better caching. Moreoever, this also means you can just place images next to your *.vue files and use relative paths based on the folder structure instead of worrying about deployment URLs. With proper config, Webpack will auto-rewrite the file paths into correct URLs in the bundled output.
url-loader allows you to conditionally inline a file as base-64 data URL if they are smaller than a given threshold. This can reduce the amount of HTTP requests for trivial files. If the file is larger than the threshold, it automatically falls back to file-loader.
eslint-loader可以自动杂你开发过程中当你保存时lint你的vue中的js标签里面代码
一个*.vue文件里面包含三个顶级标签.
先读取 template编译之后会变成组件的template选项。然后vue实例来进行导入。
下面是一个测试:
先引入官方的vue和router组件。
然后 绑定路由,初始化vm实例:
测试代码:
结果如下:
可以看见。对应的路由到的组件被渲染成功了
下面是翻译:来源于http://vue-loader.vuejs.org/en/workflow/testing.html
*.vue
每个.vue文件由3个顶级标签组成。 <template> <script> <style>
<template> <div class="example">{{ msg }}</div> </template> <script> export default { data () { return { msg: 'Hello world!' } } } </script> <style> .example { color: red; } </style>
vue-loader会解析该文件, pipe他们去别的loader,最终把他们声明为一个commonjs的组件,它的module.exports是一个组件对象。
类似下面:
其实就是一个普通的包含某些特殊key的js对象
const Foo = { template: '<div v-on:click="increase">foo{{count1}}</div>', // 该组件的私有数据 data:function(){ return {count:10}; }, computed:{ done:function(){ return this.$store.getters.doneTodos; }, count1:function(){ return this.$store.state.count; } }, methods:{ increase:function(){ this.$store.commit("increase",4); } } }
vue-loader支持使用非默认语言,比如能编译为html的模板语言,通过设置语言标签块的lang属性 。比如你可以想下面这样设置后使用sass语言:
<style lang="sass"> /* write SASS! */ </style>
<template> 默认是html语言 每一个*.vue文件最多只能包含一个template标签 内容会被解析为一个字符串, 被用作编译出来的组件的template 选项 <script> 执行在commonjs环境中,故可以使用rquire来获得其他依赖。并且因为es2015的支持,可以使用import 和export语法 该script一定要导出一个vue的组件的配置对象,一个普通的js对象被支持 <style> 默认是css语言,多个style标签是被支持的
也可以把一个组件拆分为不同的文件,然后还有src 属性来导入不同的部分
<template src="./template.html"></template> <style src="./style.css"></style> <script src="./script.js"></script>
es2015
如何导入一个模块
<script> import ComponentA from './ComponentA.vue' import ComponentB from './ComponentB.vue' export default { components: { ComponentA, ComponentB } } </script>
此时你可以在组件内部使用 <complate-a>组件 .js 文件vue-loader默认也会为你编译
scoped css
当一个style标签用于scoped属性时,它的css属性将会只被该组件所拥有,默认是加了一个随机的id
<style scoped> .example { color: red; } </style> <template> <div class="example">hi</div> </template>
会被编译为:
<style> .example[_v-f3f3eg9] { color: red; } </style> <template> <div class="example" _v-f3f3eg9>hi</div> </template> <style> /* global styles */ </style> <style scoped> /* local styles */ </style>
Hot Reload
热重载不仅仅是当你编辑一个.vue文件时,在不重载整个页面的情况下把你的页面里面的那个组件实例给替换掉,它甚至保存着你的应用和组件的当前状态
使用loader
vue-cli会自动根据lang属性调用对应的loader来处理 例如 如果要使用sass的haul
npm install sass-loader node-sass --save-dev <style lang="sass"> /* write sass here */ </style>
JavaScript会默认调用babel-loader来处理 当然你可以改变它:
npm install sass-loader node-sass --save-dev
<style lang="sass">
/* write sass here */
</style>
html的话 因为是返回一个函数,而不是一个字符串 所以:
npm install pug --save-dev <template lang="pug"> div h1 Hello world! </template>
URL Handling
background:url和img src css @import都会被当做一个模块依赖 比如url('a.png')会被翻译为requrie('a.png')
<img src="../image.png">
会变为:
createElement('img', { attrs: { src: require('../image.png') }})
因为.png不是一个js文件,所以你需要安装file-loader去处理他们。vue-cli也已经给你设置好了
好处
file-loader allows you to designate where to copy and place the asset file, and how to name it using version hashes for better caching. Moreoever, this also means you can just place images next to your *.vue files and use relative paths based on the folder structure instead of worrying about deployment URLs. With proper config, Webpack will auto-rewrite the file paths into correct URLs in the bundled output.
url-loader allows you to conditionally inline a file as base-64 data URL if they are smaller than a given threshold. This can reduce the amount of HTTP requests for trivial files. If the file is larger than the threshold, it automatically falls back to file-loader.
eslint-loader可以自动杂你开发过程中当你保存时lint你的vue中的js标签里面代码
一个*.vue文件里面包含三个顶级标签.
<template>; <script> <style>
先读取 template编译之后会变成组件的template选项。然后vue实例来进行导入。
下面是一个测试:
先引入官方的vue和router组件。
<script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
然后 绑定路由,初始化vm实例:
<body> <div id="app"> <router-view ></router-view> </div> </body> <script> const Foo = { template: '<div>foo</div>' } const Bar = { template: '<div>bar</div>' } const Baz = { template: '<div>baz</div>' } // Vue.component('topic', { // template:"<span>这是topic</span>" // }) const router = new VueRouter({ mode: 'history', routes: [ { path: '/bar', name:"bar", component: Bar }, { path: '/foo', name:"foo", component: Foo }, { path: '/other', components: { default: Baz, a: Bar, b: Foo } } ] }) window.a=new Vue({ router }).$mount("#app");
测试代码:
a.push({name:bar}); a.push({name:'foo'});
结果如下:
可以看见。对应的路由到的组件被渲染成功了
发表评论
-
vue
2017-06-03 19:41 0比如 假如没有添加上响应式属性的话,那么就会出现b只是一个简 ... -
自动配置代理
2017-02-13 15:42 1614有些时候 手机或者pc上面需要频繁的切换代理与取消代理,感觉切 ... -
对话框回调
2017-01-11 10:26 871今天遇见一个需求 在提交数据时需要同时弹出3个确认菜单,点击了 ... -
svg, 支持mouseover
2017-01-09 18:07 1071今天项目中的需求,是在一个fill后的svg path上面加上 ... -
vue 生命周期钩子
2017-01-07 22:11 1690和生命一样,vue组件创 ... -
vue,vue-router,vux,综合
2017-01-04 17:36 947实例化vue实例时初始化router store 状态管理。触 ... -
平时chrome调试遇见的 浏览器优化
2017-01-04 11:23 457js基础:在一个事件处理器(click)会形成一个闭包,可以访 ... -
百度文库复制方法
2015-11-11 10:24 1165即时对象初始化方法 (function(){ //cod ... -
js array对象的迭代方法
2015-07-16 12:09 681所有方法都接受两个参数:(fn,ctx); 默认的函数里面ct ... -
qq空间刷评论工具
2015-06-25 17:48 883var a=document.getElementsB ... -
jquery内部链式调用机理
2015-06-07 21:17 1084只需要在调用该对象合适(比如下列的setStyles)的方法后 ... -
this问题 js
2015-06-07 21:08 458任何一个函数都可以被当做构造函数使用!并且new了之后一定是返 ... -
js delete 删除机理以及它的内存泄露问题的解决方案
2015-06-02 12:43 918delete删除属性时只是解除了属性与对象的绑定,故当属性值为 ... -
浮动布局
2015-05-13 17:27 0c由于其宽度略大于右边的空格,故不会飘到右边去,会被卡住 恰好 ... -
zoom.js
2015-05-12 19:01 708它的基于bootstrap 的https://raw.gith ... -
jquery-avgrund
2015-05-12 12:31 0先引入这些文件 <link r ... -
workmark
2015-05-10 18:07 481在一个容器当中 指定 ... -
jquery
2015-05-09 16:33 0$(document).ready(function(){ ... -
豆瓣电影首页的分析
2015-05-08 22:48 844网址http://movie.douban.com 1 先上 ... -
setTimeout()用法
2015-05-08 22:31 0setTimeout("$('searchI ...
相关推荐
1. **Vue CLI**:Vue CLI 是 Vue.js 官方提供的命令行工具,用于快速搭建项目脚手架。Vue-next-admin-master 可能就是通过 Vue CLI 初始化的,它提供了自动化构建、热更新、配置管理等强大功能。 2. **Vue 单文件...
在本项目中,我们主要探讨的是使用Spring Boot后端框架与Vue.js前端脚手架(Vue CLI)结合,来构建一个完整的用户管理系统的实现过程。这个系统具备基本的用户操作功能,包括用户增加、删除、修改和查询。下面将详细...
:globe_with_meridians: vue-cli-plugin-i18n Vue CLI插件可将vue-i18n添加到您的Vue项目 :handshake: 支持新项目 Intlify Project是一个开源项目,其中包括Vue I18n和i18n工具和自由软件,其持续的开发完全依靠...
Vue CLI 3 是Vue.js的命令行工具,用于快速搭建Vue项目。它简化了项目配置,提供了开箱即用的脚手架,支持热重载、代码分割、预编译模板等功能,大大提高了开发效率。在结合Vue3.0和Vue-Quill-Editor时,可以通过Vue...
* vue-cli-plugin-qiankun* An Vue-cli3 Plugin for micro-frontend qiankun application 结合 qiankun 快速生成微前端应用的脚手架插件 Features qiankun 接入,子应用打包配置接入 修改 qiankun 官网 demo 中 vue ...
下面我们将详细介绍如何使用Vue2.0的vue-cli搭建Vue脚手架。 首先,搭建Vue脚手架需要具备一些基础的前端知识,包括HTML、CSS和JavaScript,这些都是构建Web应用的核心技术。另外,Node.js环境是必不可少的,因为...
Vue CLI 3 提供了一套全面的脚手架工具,可以快速创建一个包含最佳实践配置的新项目。它内置了Webpack,用于模块打包,并提供了许多预设和插件,简化了开发流程。通过运行简单的命令`vue create project-name`,你就...
Vue-cli是一个基于Vue.js进行快速开发的完整系统,它提供了一个官方的脚手架工具,帮助开发者快速搭建项目结构、配置webpack等构建工具。Vue-cli可以生成一个包含现代JavaScript特性的项目模板,这些特性包括ES6语法...
在开始搭建Vue脚手架之前,我们需要确保具备以下基础知识和技术栈: - **HTML**: 用于构建网页的基本结构。 - **CSS**: 用于美化网页的样式语言。 - **JavaScript**: 前端开发的核心编程语言。 - **Node.js环境**: ...
vue-cli的脚手架项目模板有webpack-simple 和 webpack 两种的区别在于webpack-simple 没有包括Eslint 检查等功能 vue-cli的项目结构 . |-- build // 项目构建(webpack)相关代码 | |-- build.js // 生产环境构建...
Vue脚手架是用于快速搭建Vue.js项目的基础架构,它集成了常见的开发工具和配置,以便开发者能够更高效地开始编码。在这个特定的项目中,我们看到它与Vue3进行了结合,Vue3是Vue.js的最新版本,带来了性能优化、语法...
Vue CLI 3是Vue.js官方提供的一个快速脚手架工具,它简化了项目的初始化和配置过程,而Ant Design Vue则是一个基于Vue.js的高质量前端组件库,灵感来源于Ant Design设计体系。 首先,让我们了解Vue CLI 3。Vue CLI ...
Vue.js的安装通常涉及两个主要步骤:全局安装Vue.js CLI(命令行界面工具)和创建项目骨架,即“脚手架”。Vue CLI,全称为Vue.js Command Line Interface,是一个官方提供的强大工具,用于快速搭建Vue应用的开发...
1. 如果您已安装 vue-cli2 ,请先删除当前脚手架,否则无法成功安装 vue-cli3 。 npm uninstall vue-cli -g 2. 检查 node.js 版本。 vue-cli3 需要 node 版本大于8.9。在cmd中输入 node -v 查看版本。如果版本过低...
Vue CLI 是一个官方提供的命令行工具,用于快速搭建 Vue.js 应用程序。它简化了项目的初始化、配置和脚手架工作,使开发者能够更专注于编写业务代码。在这个"vue-cli开发的商城源代码"项目中,我们可以看到一系列与...
Vue CLI 是一个基于 Vue.js 的命令行工具,用于快速搭建 Vue.js 应用程序的脚手架。这个压缩包“vue-cli.rar”包含了2019年12月时Vue CLI的官方离线教程,是开发者们学习和掌握Vue CLI的重要资源。 Vue CLI 提供了...
Vue.js是一款轻量级的前端JavaScript框架,以其易用...在提供的压缩包文件中,"Vue脚手架"可能包含了这个过程中的相关示例代码或者更详细的配置文件,你可以解压后参考学习,加深对Vue脚手架和Element UI的理解与应用。
vue脚手架做的模仿qq的一部分前端界面 基本常见的特效以实现 消息滑动,吸顶。看点的消息,删除消息,标签页的切换。涉及到的vue知识全面。可用作学习参考。
在现代前端开发中,高效的开发工具和框架是必不可少的,其中Avue-cli作为一款基于Vue.js的快速开发脚手架,为开发者提供了便捷的项目搭建和管理方式。Avue是轻量级的前端组件库,而Avue-cli则是它的命令行工具,旨在...
7. **脚手架工具(Vue CLI)**:Vue CLI是Vue.js的命令行工具,可以快速初始化项目并自动配置Webpack等构建工具。vue-admin-demo可能是使用Vue CLI生成的项目结构,包括源代码目录、配置文件等。 8. **ECharts图表...