v-kitty
Version:
hello kitty
157 lines (147 loc) • 5.14 kB
Markdown
```JavaScript
var actionFiles = [
{
file: "/Users/mebx/git/fudongguang/v-kitty/test/index.html",
ext:".index.html",
cdnUrl:"https://si.geili.cn/ffs2i2n121n112o90811.js",//cdn地址,
name:"./index.html",
destFile:"",//build后生成的文件
mtime:"xxxx-xx-xx",//最后修改时间
content:"xxxx",//文件源码 图片没有
compile:"",//编译后的内容 图片没有
isNew:false,//默认是true,
param:"",
options: {
cdn: "@@cdn@@/index",
title: "猜你喜欢"
},
actionFiles: [
{
content: "a11111111"
},
{
file: "/Users/mebx/git/fudongguang/v-kitty/test/index.js",
ext:".index.js",
cdnUrl:"https://si.geili.cn/ffs2i2n121n112o90811.js?v=123&a=123",//cdn地址,
param:"?v=123&a=123",
name:"./index.js",
destFile:"",//build后生成的文件
mtime:"xxxx-xx-xx",//最后修改时间
content:"xxxx",//文件源码 图片没有
compile:"xxxx",//编译后的内容 图片没有
isNew:true,
actionFiles:[
{
content:"a222222"
},
{
file:"/Users/mebx/git/fudongguang/v-kitty/test/index.less",
ext:".index.less",
cdnUrl:"https://si.geili.cn/ffs2i2n121n112o90811.css",//cdn地址
param:"",
name:"./index.less",
destFile:"",//build后生成的文件
mtime:"xxxx-xx-xx",//最后修改时间
content:"xxxx",//文件源码 图片没有
compile:"xxxx",//编译后的内容 图片没有
actionFiles: [content,file,file,content], //最后一定是 [content]
isNew:false,
option:{
cdn: "@@cdn@@/index",
title: "猜你喜欢"
},
loaders:["less","minify"]
},
{
content:"b222222"
}
],
loaders:["bable","minify"]
},
{
file: "b111111"
}
]
}
];
//require不能有options,同事 require的 loaders只能是['_require']
```
```JavaScript
var actionFiles = {
"/Users/mebx/git/fudongguang/v-kitty/test/index.js":{
file:"/Users/mebx/git/fudongguang/v-kitty/test/index.js",//文件名称
cdnUrl:"https://si.geili.cn/ffs2i2n121n112o90811.js",//cdn地址,
destFile:"",//build后生成的文件
mtime:"xxxx-xx-xx",//最后修改时间
content:"xxxx",//文件源码,原始状态 图片没有
compile:"xxxx",//编译后的内容 图片没有
options: {
cdn: "@@cdn@@/index", //cdn是保留字,不能用在自定义变量上面
title: "猜你喜欢" //自定变量title
},
actionFiles:[
{
content: "a11111111"
},
{
actionfiles
}
{
content: "b11111111"
},
]
}
};
```
1. 解析文件,每次都生成新的模型数据
2. 解析单个文件时,发现mtime没有变更(如果mtime变更,但是content没有变),assign老的文件模型数据,并进行isNew=false打标.
3. 对isNew打标的数据进行判断,然后冒泡处理变动的文件,用loaders来编译数据.
1. config.cdnUrl //cdn地址设定 用以替换 @@cdn@@
2. 如果_include选项中没有不是以文件名结尾,那么在后面增加hash文件名
```javascript
_include(cdn('./a.js'),{"cdn":"@@cdn@@/index"})
```
```JavaScript
var config = {
cache:true,//是否开启缓存,默认开启,加速编译
tag:'_include',//引入tag
baseDir:__dirname.replace(/\/node_modules.*$/,''),//项目根目录
cdnUrl:"https://baidu.com",//cdn地址路径
varTag:{
open:'@@',//变量开始符
close:"@@"//变量结束符
}
};
```
1. require的代码自动执行
2. 代码执行require要方便处理
3. 执行后要返回module.exports
```JavaScript
//执行模型
(function(modules){
function _kitty_require(moduleId){
var module = {
exports:{},
id:moduleId
};
modules[moduleId].call(module.exports,module,_kitty_require);
return module.exports;
}
return _kitty_require(0);
})([module,module]);
```
```javascript
//module模型数据 同主数据模型,增加了下面模型数据
actionFile.mid=111;
//同时 actionFile.loaders=['_require'] 不能自定义设置
```
console.log(actionFile.file)