webpack 打包不会玩,整了这么个小玩具

一段 vue 绑定代码,关键点在 gmallComponent

1、异步加载外部 vue 文件(非 .vue)

2、按一定规则拆分 template、script、style

new Vue({
el: '#app_vuejs_replace',
data: {
search_key : '',
results : [],
pageindex : 1,
selecteditem : null
},
components: {
'vue-test': gmallComponent('gz/test.html', {
props: ['items']
})
}
});

gz/test.html 使用习惯几乎遵循 vue 原生,定义模板、脚本、样式

<div>
<div>I am async!</div>
<div v-for="item in items" @click="onclick(item.company_name)">
{{item.web_title}}
</div>
</div> <script>
export = {
methods: {
onclick: function(msg) {
showTip(msg);
}
}
}
</script> <style>
.fade-enter-active, .fade-leave-active {
transition: opacity .9s
}
.fade-enter, .fade-leave-active {
opacity: 0
}
</style>

将以下代码定义到公共 .js 文件中

<script type="text/javascript">
function gmallComponent(url, vuecom) {
if (!vuecom) vuecom = {};
return function(resolve, reject) {
$.get(url).done(function(r) {
var rl = r.toLowerCase();
var style = '';
var styleIndexEnd = rl.lastIndexOf('</style>');
var styleIndex = rl.lastIndexOf('<style', styleIndexEnd);
if (styleIndexEnd !== -1 && styleIndex !== -1) {
style = r.substring(styleIndex, styleIndexEnd);
style = style.substr(style.indexOf('>') + 1);
style = '<component scoped :is="\'style\'">' + style + '</component>';
} var scriptIndexEnd = rl.lastIndexOf('<\/script>');
var scriptIndex = rl.lastIndexOf('<script', scriptIndexEnd);
if (scriptIndexEnd !== -1 && scriptIndex !== -1) {
var script = r.substring(scriptIndex, scriptIndexEnd);
script = script.substr(script.indexOf('>') + 1);
script = '(' + script.replace(/export\s*=\s*\{/i, '{') + ')';
var obj = eval(script);
for (var a in obj) vuecom[a] = obj[a];
}
var template = r.substring(0, Math.min(styleIndex, scriptIndex));
if (style) {
var index = template.lastIndexOf('</');
if (index !== -1) template = template.substr(0, index) + style + template.substr(index);
}
vuecom.template = template;
debugger
resolve(vuecom);
});
};
}

黄聪:不使用 webpack,vuejs 异步加载模板的更多相关文章

  1. 不使用 webpack,vuejs 异步加载模板

    webpack 打包不会玩,整了这么个小玩具 一段 vue 绑定代码,关键点在 gmallComponent 1.异步加载外部 vue 文件(非 .vue) 2.按一定规则拆分 template.sc ...

  2. 黄聪:WordPress实现HTML5预加载

    WordPress实现HTML5预加载方法很简单,把下面代码: <?php if (is_archive() && ($paged > 1) && ($pa ...

  3. 黄聪:利用ImageMagicK给图片加水印

    1 图片水印处理 假设把名为logo.gif的水印图标添加在原始图片(src.jpg)右下角,且水印的下边缘距原始图片10像素.右边缘距原始图片5像素.使用如下命令即可: convert src.jp ...

  4. React配合Webpack实现代码分割与异步加载

    这是Webpack+React系列配置过程记录的第四篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...

  5. Vue(基础七)_webpack(webpack异步加载原理)

    ---恢复内容开始--- 一.前言 1.webpack异步加载原理’                                           2.webpack.ensure原理     ...

  6. webpack异步加载业务模块

    虽然把我们用到的JS文件全部打包一个可以节省请求数,但如果打包后的JS文件过大,那么也容易出现白屏现象,许多操作失灵.而且一些区域是点到才出现,那么相关的JS其实可以剥离出这个大JS文件外.这就涉及到 ...

  7. 黄聪:《跟黄聪学WordPress主题开发》

    又一个作品完成!<跟黄聪学Wordpress主题开发>,国内最好的Wordpress主题模版开发视频教程!! 目录预览: WordPress官方源文件层式结构讲解 WordPress数据库 ...

  8. 黄聪:如何使用CodeSmith批量生成代码(转:http://www.cnblogs.com/huangcong/archive/2010/06/14/1758201.html)

    先看看CodeSmith的工作原理: 简单的说:CodeSmith首先会去数据库获取数据库的结构,如各个表的名称,表的字段,表间的关系等等,之后再根据用户自定义好的模板文件,用数据库结构中的关键字替代 ...

  9. Android ListView异步加载数据

    1.主Activity public class MainActivity extends Activity { private ListView listView; private ArrayLis ...

随机推荐

  1. 剑指Offer-40.数组中只出现一次的数字(C++/Java)

    题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 分析: 我们知道,两个相同的数字异或的结果等于0,所以利用这个性质将数组中所有的数字异或,求得的结 ...

  2. enter键的使用

    vue全部的按键别名: .enter .tab .delete (捕获“删除”和“退格”键) .esc .space .up .down .left .right vue中 <input v-o ...

  3. C语言中,关于相除的问题

    若定义的类型是 整数型:int a,b ;则a/b的值为整数的,不会带着小数点的..... 若定义的数据类型是 浮点型的 :double a,b; 则这种情况下,得到的结果与数学结果无异

  4. tensorflow-- Dataset创建数据集对象

    tf.data模块包含: experimental 模块 Dataset 类  FixedLengthRecordDataset 类 TFRecordDataset 类 TextLineDataset ...

  5. Cypress安装使用(E2E测试框架)

    一.简介 Cypress是为现代网络打造的下一代前端测试工具,解决了开发人员和QA工程师在测试现代应用程序时面临的关键难点问题. Cypress包含免费的.开源的.可本地安装的Test Runner  ...

  6. Postman安装出错.NET Framework 4.5 failed to install

    正常情况下安装Postman不会出错,联网下载即可,这里的异常是因为环境不允许升级.NET4.5 解决方法:找到Postman的安装文件夹,将postman.exe启动发现可以使用 若没有安装过的文件 ...

  7. .net core 2.1 基于Jwt的登录认证

    1.新建一个.net core2.1 基于 api 的工程,引用Microsoft.AspNetCore.Authentication.JwtBearer 包 2.新建一个Token的实体类,一个Jw ...

  8. 周会材料:高并发程序设计<一>

    第一章 几个概念 同步:一次方法调用须等到其返回后才能有后续 异步:一次方法调用后在另一线程执行,调用者可不必等其返回就可进行后续 并发:任务以极短的时间交替进行 并行:任务同时进行 临界区:公共资源 ...

  9. CAD编辑器哪个好用?如何使用CAD编辑器

    说起CAD图纸很多的朋友都很熟悉,因为CAD图纸在很多领域都有广泛的应用.那CAD图纸都是使用CAD编辑器制图软件来进行绘制的,图纸的格式都是为dxf格式或者是dwg格式的.对于才接触CAD的伙伴们来 ...

  10. layui table 分页 序号始终从”1“开始解决方法

    在用Layui table 分页显示数据,用 type:"numbers" 进行显示序号有以下的问题 1.表格自带的分页,page:true 这种分页,在切换页面的时候序号可以正常 ...