Vue 去脚手架
上回模仿了一个nw,按照原理说,简单。
今天说Vue,脚手架是个好东西,做项目都给你配置好,nodejs很牛,不过对于我这种只想做一个界面的人来说,有点儿太大了,用不上。
如果说,不用脚手架 nodejs要面临哪些问题呢。
1. 组件,组件文件vue,用的是es6语法,目前大多数浏览器不支持,其实就两个命令 import export,为了这点儿东西,哎,想想就烦。
2. 不用组件呢?,vue的灵魂就两个,一个是mvvm模式的绑定,二个就是组件,确实想用。
没法想,自己加载吧,我们来聊一聊,手动加载vue文件组件吧。
先来分析一下
1.vue是个什么东西:简单说,是一个对象,我们构建新的vue对象时候,要提供一个配置对象options,关键就在这个配置对象上。
它包含了
el:挂载点element
data:数据
methods:方法
.....
那么,
2 . 组件是什么东西呢,嗯,简单的说也是一个对象,这个对象和vue配置类一样啊,多了一个template模板而已
它也和vue配置对象一样,包含那几样东西。
3. vue文件是什么东西呢,vue文件包含了什么呢,简单的说,包含了组件的模板和配置类options。
ok,现在清楚了,如果我们把vue文件解析一下,组合出一个配置类,也就是制造一个options,把模板放进去,他就是一个组件的配置类options
再通过一些文档上指出的组件加载方式,完全可以,自行,动态的,加载vue文件,而不用脚手架,当然了,vue文件,本身也可以自己写,不用es6格式,有什么所谓呢。反正造出来就好了
重点,算是重点吧,具体要分哪几步
1. 加载vue文件,没法,js是前端语言,要想问后端要文件,那就httprequest,httprequest是js原生的请求类,要是觉得麻烦,jquery里面也有ajex是这么写吧,我没用过,vue-resource也提供了一样的功能,此外还有好多,不列举了
重点是,一定要用同步的请求去做我们要做的事,不管你用什么插件,还是用原生的,这里我说,原生的好搞一些。
2. 分析vue,文件读上来了,分析也不叫分析吧,这太简单了,字符串分析,方法太多了,一个一字看,也行,分隔符分割也行,当然还有正则表达式,我们要做的提取个部分,<template>部分,<scripte>部分,<style>部分
3. 组合,制造一个options对象,随你造咯,造好返回一个对象给Vue就好了。
全局对象就Vue.components()
局部对象就,组件options.components上面加一下。
我简单写了一个插件,用作配合非脚手架加载vue,不如看一下,我想也就都不用说了。
var vueloader = {
install : function(Vue,options){
Vue.ImportFrom = function(url){
url = window.location.href + url
var result
RequestVue(url,function(r){
var context = r
if(context){
var script = getTagContext('script',context)
var options = eval("("+script+")")
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(vueloader)
插件要提供install方法,两个参数Vue,options
往Vue上挂一个方法importVue,然后最下面Vue.use 这个插件。
在你的 html中 <script src="vue-component-loader.js" type="text/javascript" charset="utf-8"></script>
这是我的插件文件名
之后,随便在js里面用了。
经过,我的一顿分析,eval()是个很牛逼的方法,它可以执行script,从而简化了很多麻烦事
我找个vue文件你看
<template>
<div>
<p>this is father:{{msg}}</p>
<p><button @click='say'>Say</button></p>
<cson :msgfrom = msgfromfather></cson>
</div>
}
</template> <script> {
name:'cfather',
data:function(){return{
msg:"",
msgfromfather:'msg from father'
}},
methods:{
say:function(){
this.msg = "hello you!"
this.msgfromfather = 'father:hello from father'
}
},
components:{'cson':Vue.ImportFrom('cson.vue')}
} </script> <style>
</style>
这是我写的vue文件,也是分来来template和script这些
那么,我不需要写 export default了,我直接一个对象就好了,因为我的解析工具里面,直接把这个对象字符串用eval()给实例化了
第二点, components:{'cson':Vue.ImportFrom('cson.vue')}
这里直接把插件里的加载方法写进去了,然后eval直接给执行了,多省事。
那么,该说的就说完了,回见了。
Vue 去脚手架的更多相关文章
- Vue 去脚手架插件,自动加载vue文件
接上回 一些本质 本质上,去脚手架也好,读取vue文件也好,无非是维护options,每个Vue对象的初始化配置对象不触及Vue内部而言,在外部想怎么改都是可以的,只要保证options的正确,一切都 ...
- Vue 去脚手架插件,自动加载vue文件,style怎么办
书接上上会,因为当时也没想好怎么办,所以装聋作哑的忽略了Vue文件中的Style,Vue的做法我看着晕乎乎的,细想的话,无非就是自动填写到dom中,所担心的无非是命名冲突. 在一个项目中(像我这种自娱 ...
- 简单vue项目脚手架(vue+webpack2.0+vuex+vue-router)
github地址 使用技术栈 webpack(^2.6.1) webpack-dev-server(^2.4.5) vue(^2.3.3) vuex(^2.3.1) vue-router(^2.5.3 ...
- 分享一个vue项目“脚手架”项目的实现步骤
搭建缘由 源于公司每次新启动一个由多人协同开发的项目都由负责人初始化项目之后,每个人再去从私服pull一下项目才开始开发.但是每次初始化工程都是一步步的造轮子,一个个依赖去安装,新建一个个不同功能的文 ...
- 13. Vue CLI脚手架
一. Vue CLI 介绍 1. 什么是Vue CLI? Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.Vue CLI 致力于将 Vue 生态中的工具基础标准化.它确保了各种构建工 ...
- 简单vue项目脚手架
简单vue项目脚手架 github地址 使用技术栈 webpack(^2.6.1) webpack-dev-server(^2.4.5) vue(^2.3.3) vuex(^2.3.1) vue-ro ...
- vue.cli脚手架初次使用图文教程
vue-cli作用 vue-cli作为vue的脚手架,可以帮助我们在实际开发中自动生成vue.js的模板工程. vue-cli使用 !!前提:需要vue和webpack 安装全局vue-cli npm ...
- 从0开始搭建vue+webpack脚手架(三)
在从0开始搭建vue+webpack脚手架(二)中已经基本完成了开发环境的配置.当开发完成后,我们需要将完成的项目进行打包,接下来对打包做一些优化: 运行 $ npm run build 可生成dis ...
- 从0开始搭建vue+webpack脚手架(二)
接着从0开始搭建vue+webpack脚手架(一) 三.配置webpack-dev-server 1. webpack-dev-server自带一个node的服务器, 项目在服务端运行的同时可以实现热 ...
随机推荐
- 【9.29 模拟】T3 小清新最优化(easy)
[题目描述] 给出一个长度为 n 的序列,序列的每个元素为一个二元组,代表一种单目运算: • \((0,x)\): 对于一个数\(a\),将其变为 \(a\&x\).\((\&=x)\ ...
- POJ 2342 树的最大独立集
题意:在树的最大独立集的基础上,加上权值.求最大. 分析: 采用刷表的方式写记忆化,考虑一个点选和不选,返回方式pair 型. 首先,无根树转有根树,dp(root). 注意的是:u不选,那么他的子节 ...
- NW.js开发环境的搭建
写在前面: 之前一直在找关于在mac怎么搭建nw.js的开发环境,苦于自己也没有很深入的理解,其实看看官方文档就差不多知道mac下要怎么整了. 官方文档的图: 正题开始: 先去下载一个nw.js的安装 ...
- 【luogu P1514 引水入城】 题解
题目链接:https://www.luogu.org/problemnew/show/P1514 // luogu-judger-enable-o2 #include <iostream> ...
- CSU-ACM2018暑假集训比赛1
A:https://www.cnblogs.com/yinbiao/p/9365127.html B:https://www.cnblogs.com/yinbiao/p/9365171.html C: ...
- 学习WebSocket笔记
由于HTTP协议是无状态的,服务器只会响应来自客户端的请求,但是它与客户端之间不具备持续连接. 当用户在浏览器上进行操作时,可以请求服务器上的api:但是反过来不可以:服务端发生了一件事,无法将这个事 ...
- vue进阶语法及生命周期函数
1.calss和style绑定 操作元素的 class 列表和内联样式style是数据绑定的一个常见需求,它两都是属性,所以可以通过v-bind来绑定 1.1绑定HTML class 可以给v-bin ...
- 阻止vue事件冒泡的方法
- Django-rest-framework(二)serializers 使用
简介 初次见到serializers文件,想必大家都会感到陌生,所以,我们不妨换个词来形容他的作用,那就是django 中的Form,这样是不是感觉熟悉了一点. 实际上,serializers 的作用 ...
- c# 获取网络流量
public class ip_helper{enum Constants {MAX_INTERFACE_NAME_LEN=256, MAXLEN_PHYSADDR=8,MAXLEN_IFDESCR= ...