接上回

一些本质

  本质上,vue,无非是维护options,每个Vue对象的初始化配置对象不触及Vue内部而言,在外部想怎么改都是可以的,只要保证options的正确,一切都不是问题。

读取

  读取不用再聊了,一句话,远程请求,只要服务器答应,这个不麻烦。

读取之后的处理

  上回,忙着把他渲染出来,所以都没想过其他事情,那可做的事情其实很多。

例如

  1. 放到localstrage里面存起来,这对于复用组件是会提速很多的不用http协议传输,只在本地读取一个字符串

  2. 或者在本地存成vue文件,随时读取都可以

  3. 更异想天开的可以组织好options发回服务器,下次一次性读上来,也没问题,似乎触及了某些编译的原理,想想罢了,再研究。

因为

  想法很多,还是不要好高骛远,js 对对象序列化这一部分,我还没来得及百度,也不知道对象的方法要如何存储,只有整篇vue存起来,现在看还是比较简单的。

为了极大的简化(偷懒)vue文件的编制工作,import 什么的不如一步到位都省略掉,开发者无需关心组件的加载问题,只要写好关联即可,就像这样

<template>
<div>
<p>this is father,he has a son</p>
<p>{{msg}}</p>
<button @click="say">say</button><button @click="saytoson">saytoson</button>
<son :msgfromfather = msgtoson></son>
<hr></hr>
</div>
</template> <script>
{
name:'father',
data:function(){return{
msg:"",
msgtoson:""
}},
methods:{
say:function(){
this.msg="father said:Hello there!"
},
saytoson:function(){
this.msgtoson = "father said to son:hi,son"
}
},
components:['components/son']
}
</script> <style>
</style>

script部分,不再有任何涉及到调用组件方法的部分,把 components属性变成数组,直接存储目标的路径即可,在解析过程中自动替换成包含 子组件对象的对象即可

转换完应该类似components:{{name:'son',methods ... .}}这样的对象,想法到了,一切都是顺其自然的,因为代码实际上是最简单的部分。

新鲜出炉的插件就像下面这样。

var vcl = {
install: function(Vue, Options) {
Vue.create = function(options) {
importCpts(options)
return new Vue(options)
} importCpts = function(options) {
//存在组件列表
if(options.components) {
//组件列表是数字
if(options.components instanceof Array) {
var tmpCpts = options.components
options.components = {}
tmpCpts.forEach(function(item) {
var newCptOption = LoadFile(item)
options.components[newCptOption.name] = newCptOption
})
}
}
} LoadFile = function(url) { var url1 = window.location.href + url + '.vue'
var context = ""
var result = {} var stg = localStorage.getItem(url1)
if(stg) {
context = stg } else {
RequestVue(url1, function(r) {
context = r
localStorage.setItem(url1,context)
})
}
if(context) {
var script = GetTagContext('script', context) var options = eval("(" + script + ")") importCpts(options) options.template = GetTagContext('template', context) result = options
} return result
} function RequestVue(url, cb) {
let request = new XMLHttpRequest()
request.user = ''
request.open('GET', url, false)
request.send(null)
if(request.status === 200) {
cb(request.responseText)
}
} function GetTagContext(tag, str) {
var reg = new RegExp("<" + tag + ">([\\s\\S]*)<\/" + tag + ">")
var matchs = reg.exec(str)
return matchs[1]
} }
}
Vue.use(vcl)

直接把 new Vue也包装起来,所有optinos在使用之前,都去importCpts一下,去检查有没有子组件components存在,有就load一下,没有就过。清晰明了

并且,如果需要加载,也先去localstrage去看一眼,有的化就不用远程加载了,省事了。

重定义的一些东西

  因为插件的原因,对vue文件,和项目重新定义了一些格式上的规范

  1. 入口

    Vue.create() 方法,该方法接受一个options,也可以简写成 Vuecreate({el:'#xxx' .. ...})

  2. vue文件中 <script> 部分,直接{...} 无需加载组件

  3. components变成数组 like   components:['subcomponentspath'] , 该数组存储子组件的路径,路径的格式是 目录/文件名,无后缀,所有组件是从根目录开始的,懒,没研究相对路径,先这么写吧

  4. 其他的,自己去发现吧,想不起来了。

未完待续,后面再去便利化,是唯一的目标。

Vue 去脚手架插件,自动加载vue文件的更多相关文章

  1. 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间

    [源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...

  2. Spring boot 国际化自动加载资源文件问题

    Spring boot 国际化自动加载资源文件问题 最近在做基于Spring boot配置的项目.中间遇到一个国际化资源加载的问题,正常来说只要在application.properties文件中定义 ...

  3. Vue 去脚手架插件,自动加载vue文件,style怎么办

    书接上上会,因为当时也没想好怎么办,所以装聋作哑的忽略了Vue文件中的Style,Vue的做法我看着晕乎乎的,细想的话,无非就是自动填写到dom中,所担心的无非是命名冲突. 在一个项目中(像我这种自娱 ...

  4. 前端 | 页面触底自动加载 Vue 组件

    不管是 web 端还是移动端,信息流都是现在很流行的信息展示方式.信息流经常搭配自动加载一起使用以获得更好的使用体验. 最近在使用 Vue 开发过程中也遇到了首页信息流自动加载的需求.大致了解了一下几 ...

  5. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(12):XML配置自动扫描包,自动加载*.properties文件

    一.XML和注解组合使用 前几篇的测试案例都是在Java类中配置,现在换一种使用方式,在XML中配置,使Spring IoC容器在启动之后自动去扫描配置的包路径,扫描加载指定路径下的propertie ...

  6. php自动加载类文件探讨,spl_autoload_register自动加载原理

    spl_autoload_register函数是实现自动加载未定义类功能的的重要方法,所谓的自动加载意思就是 我们的new 一个类的时候必须先include或者require的类文件,如果没有incl ...

  7. php中 __autoload函数 自动加载类文件机制

    魔术函数,自动加载机制function __autoload($class_name) {   //自动传递的是类名$path = str_replace('_', '/', $class_name) ...

  8. Intellij Idea自动加载改动文件和自动自动热部署加载

    1:准备原料 我的Intellij Idea的版本是15. 之后tomcat自动加载修,你只需要在浏览器刷新一下页面即可. ************************************** ...

  9. composer自动加载一个文件后必须执行命令composer dump-autoload

    "autoload": { "classmap": [ "database" ], "psr-4": { "A ...

随机推荐

  1. 使用 Android 客户端向 Ruby on rails 构建的 Web Application 提交 HTTP GET 和 HTTP POST 请求

    最近想弄个能访问 Internet 的 Android 应用,因为求快所以用了 Ruby on Rails 来提供 HTTP 资源.这方面的资料还是比较少的,所以把尝试的过程记录下来. 1 使用 Ru ...

  2. swift语言的特点(相对于oc)

    1.泛型.泛型约束与扩展: 2.函数式编程: 3.值类型.引用类型: 4.枚举.关联值.元组等其他 上述为swift最大的特点 Another safety feature is that by de ...

  3. POJ 1011 Sticks 【DFS 剪枝】

    题目链接:http://poj.org/problem?id=1011 Sticks Time Limit: 1000MS   Memory Limit: 10000K Total Submissio ...

  4. STL - set【集合】

    参考:http://www.cplusplus.com/reference/set/set/ 一.set 是按特定顺序存储唯一元素的容器 实现是一种非常高效的平衡检索二叉树:红黑树(Red-Black ...

  5. [18/12/03] 多态(polymorphism)和对象的转型(casting)

    一.多态 多态指的是同一个方法调用,由于对象不同可能会有不同的行为.现实生活中,同一个方法,具体实现会完全不同. 比如:同样是调用人的“休息”方法,张三是睡觉,李四是旅游,同样是调用人“吃饭”的方法, ...

  6. 整个简历的讲解(falling+mimic+refidet)

    1.解决方案 下边缘: a.论文的数据来自kitti,gt数据来自于激光雷达,利用kitti自带的开发包先将激光雷达的数据映射到图片的二维平面,每个x,y会生成对应的d(x,y),即depth.再对每 ...

  7. 【luogu P3063 [USACO12DEC]牛奶的路由Milk Routing】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3063#sub 我很好奇这道题为什么没被收入SPFA好题 #include <cstdio> #i ...

  8. 【luogu P1865 A % B Problem】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1865 其实就是埃拉托色尼筛素数模板... 好像每个数暴力枚举到sqrt()也可以...就算当我无聊练手罢 # ...

  9. Android学习笔记_65_登录功能本身没有任何特别

    对于登录功能本身没有任何特别,使用httpclient向服务器post用户名密码即可.但是为了保持登录的状态(在各个Activity之间切换时要让网站知道用户一直是处于登录的状态)就需要进行cooki ...

  10. Vue nodejs商城项目-商品列表价格过滤和加入购物车功能

    一.价格过滤功能 GoodsList.vue >>点击价格区间时发送请求 methods:{     getGoodsList(flag){         var param = {   ...