vue-loader 细节

https://cn.vuejs.org/v2/guide/render-function.html

https://cn.vuejs.org/v2/guide/deployment.html

使用vue单文件组件都是通过vue-loader来引入的,这里记录一些细节

自动实现了template到render函数的转换

在一个vue组件中,组件的html代码可以通过template属性或render函数来指定,两者的区别在于,template会转换为render函数来执行,也就是说最终执行的都是render函数。

所以在生产环境中,可以先进行编译,这样生产环境中运行就不再需要动态转换,性能可以提高一些。

vue-loader默认做了这个转换过程,打包后的bundle文件有如下代码 :

//...
"use strict";
var render = function() {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c("div", { staticClass: "wrapper" }, [
    _c("div", { staticClass: "container" }, [
      _vm.loginPage
        ? _c(
            "form",
            {
              attrs: { action: "" },
              on: {
                submit: function($event) {
                  $event.preventDefault()
                  _vm.login($event)
                }
              }
            },
// ....

.vue (单文件组件)中的template已经被转换了。实现以上过程实际上是vue-loader 内 调用了vue-template-compiler 。在vue-loader/template-compiler/index.js 中有对vue-template-compiler 进行引用

处理css

.vue 文件中 style表内的样式默认都是通过js动态写入到head中,如果这个js较慢才执行,则屏幕可能出现闪屏现象,而且对浏览器缓存不友好。解决办法是使用插件。参考如下:

https://vue-loader.vuejs.org/zh-cn/configurations/extract-css.html

时间: 2024-08-06 23:44:27

vue-loader 细节的相关文章

vue小细节

1.vue.js里的vm: 实例名称~vm ~他是new出来的, var vm=new Vue({}) var app =new Vue({}) 官方api用的vm,只是一个实例 2.vm.$el解读: var vm = new Vue({ el: '#app', router, template: '<App/>', components: {App} }); console.log(vm.$el) 这里,只能在入口文件中获取vm.$el,并不能在其他文件获取 通过 Vue 命令行使用 we

Vue Loader 作用域CSS(scoped)——/deep/ 深入组件选择器

用过vue组件的前端同学应该都遇到过一个问题,就是在当前页的组件有自定义样式,而用了scoped编译出的样式对组件内部并不起作用,最后要写全局样式才能有效,但是可能会污染到其他组件,其实我们可以用/deep/来解决此问题. 关于scoped请查看:https://www.cnblogs.com/vickylinj/p/9573395.html 1.混合本地和全局样式 您可以在同一组件中包含全局和非全局样式,此方法可能造成污染: <style> /* global styles */ </

配置webpack loader vue 报错:Module build failed: TypeError: this._init is not a function

单文件组件 引入时报错 配置webpage.config.js中的vue 需要如下写法 { test: /\.vue/, loader: "vue-loader", } 之前写的loader 是vue, 并没有加 -loader所以报错

追求极致的用户体验ssr(基于vue的服务端渲染)

首先这篇博客并不是ssr建议教程,需要ssr入门的我建议也不要搜索博客了,因为官网给出了详细的入门步骤,只需要step by step就可以了,这篇博客的意义是如何使用ssr,可能不同的人有不同的意见,我舍弃了ssr中的vuex和vue-router增加了redis,serverfetch等等实现了适合自己公司的业务,个人认为并不是所有的东西都值得吸收,对我来说我能用到的只是ssr将vue生成一个html和对应的js. 虾面我们来看看什么是服务端渲染? 官网给出的解释: Vue.js 是构建客户

Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(下篇——多页面VueSSR+热更新Server)

Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(下篇--多页面VueSSR+热更新Server) @(HTML/JS) 这是Vue多页面框架系列文章的第二篇,上一篇(纯前端Vue多页面)中,我们尝试从webpack-simple原型项目改造为一个多页面的Vue项目.而这里,我们继续往前,尝试把Vue多页面改造为Nodejs直出.由于步骤较多,所以本文片幅较长. 本文源代码:https://github.com/kenkozheng/HTML5_research/tr

webpack加载postcss,以及autoprefixer的loader

webpack2.0加载postcssloader以及autoprefixer实现自动根据兼容性的需求给css加私有前缀的功能,给开发带来便利, 下面是我的配置信息,亲测有效: 1.webpack.config.js的配置: module: { rules: [ { test: /\.vue$/, loader: 'vue-loader', options: { // vue-loader options go here postcss: [require('autoprefixer')({ b

Vue常用经典开源项目汇总参考-海量

Vue常用经典开源项目汇总参考-海量 Vue是什么? Vue.js(读音 /vju/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vue 完全有能力驱动采用单文件组件和 Vue 生态系统支持的库开发的复杂单页应用. Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件. 易用(已经会了HTML,CSS,J

vue+cordova项目

教你用Cordova打包Vue项目 现在国内越来越多的开发者使用Vue开发混合app,但是当大家开发完成过后才发现不知道该怎么将Vue项目打包成app.据我现在的了解打包Vue项目目前流行的就是使用weex和cordova.weex是阿里提供并且Vue的作者也极力推荐的,有兴趣的可以去学习使用一下.因为我本身是做angular+ionic的,所以比较青睐cordova,下面我就教大家怎么使用cordova打包Vue项目: 第一步:安装cordova 如果已经安装则直接跳过,否则执行以下命令: n

怎样通过已经使用过webpack+vue+vueRouter+vuecli的配置文件package.json创建一个项目

首先,我们自己得手动创建一个webpack+vue+vueRouter+vuecli工程,执行下面:如:新建一个vue项目,创建一个基于"webpack"的项目,项目名为vuedemo: $ vue init webpack vuedemo 安装完成后进入工程名称再根据原来项目的配置文件初始化 $ cd vuedemo $ npm install 但是由于在新建的时候对eslint的选择中选择了Yes,所以后面根据配置package.json的时候,发现没有eslint-friendl

nodejs+webpack+vue之webpack

webpack是一款模块加载器兼打包工具,把JS.样式,图片都作为模块来使用和处理.项目下有个配置文件webpack.config.js,用来告诉webpack需要做什么,本项目的webpack.config.js文件内容如下: 引入模块: var path = require('path') var webpack = require('webpack') 入口文件及输出文件配置: 通过entry节点可以配置入口文件,且支持多个入口文件,每个模板只会有一个入口文件. 通过oupput节点可以配