node-cube / cube Goto Github PK
View Code? Open in Web Editor NEWcube, a new way writing browser-side code. node-cube
Home Page: https://node-cube.github.io/
cube, a new way writing browser-side code. node-cube
Home Page: https://node-cube.github.io/
Cube(moduleName, [require], callback, namespace)
, 只影响到build环节process_js
解析require中的路径 require("remote:/asdfad")
Cube(moduleName, [['remote', path]], callback, namespace)
Cube(moduleName, [a, b, c], callback, namespace);
remoteBase
选项,该选项为Object,支持多源Cube.init({
....
remoteBase: {
'remoteAlias': 'http://remote_real_path'
}
....
});
分析出整个工程的结构,自动合并一些代码, 并支持人工干预,使最终结果更准确
需要将现在的mime-type改成 text/javascrpt
循环引用在前端的依赖中,必须断开链路。 什么时候断开合适,看看下面的两种场景。
a.js
module.exports = function () {
var b = requrie('./b');
}
b.js
var a = require('./a');
module.exports = function () {
a.hello();
};
a.js
var b = requrie('./b');
module.exports = function () {
b();
}
b.js
module.exports = function () {
require('./a').hello();
};
jade or css could be a part of component;
After a css file loaded, auto import it into <style> tag.
Many reasons may result to 'request timeout', debug info should be more clear.
后端忽略强制解析buildInModule, 抛出warning, 但不打断请求, 模块继续输出
寻址失败的错误在模块依赖加载时触发。
lodash模块 : lodash/fp/valueOf.js
会提示模块找不到,而valueOf.js的代码非常简单
module.exports = require('./wraperValue');
通常情况需要传入的模块是绝对路径开头
cube.use('/test/fish.js');
这在编译出来的模块中没问题,因为编译之后的地址都是绝对地址,但是在页面的初始配置中就容易忽略,加入容错机制
cube.use('test/fish.js'); // 兼容此种场景
cube.use('./test/fish.js'); // 兼容更规范的场景
在html页面上部署cube时, Cube.use
的场景, 可以解释为 pwd
= Cube.base
生成清除 cache 的链接处引用了 document.body
cube/runtime/cube_clean_cache.js
Line 19 in b4b8d8f
document.body.appendChild(a);
如果 cube 在 body 之前引用会报错:
TypeError: Cannot read property 'appendChild' of undefined
是否能去掉__filename, 如果引用数据,数据为对象格式,经常会报错
base 的配置, 支持为空时,相对当前页面路径寻址文件
Cube.init({
main: '/test.js'
base: ''
})
support for jade and ejs should be default, not triggered when user init cube with some args
viewport.js 进行第一层引用
Grid = require 'DBU_REMOTE:/com/grid/index.js'
第一层grid/index.js 在去引用第二层grid/index.jade.js
Cube("DBU_REMOTE:/com/grid/index.js",["DBU_REMOTE:/com/grid/index.jade.js"]
第二层grid/index.jade.js在编译的时候,应该也要加上DBU_REMOTE:/才对
Cube("/com/grid/index.jade.js",["jade_runtime"]
需要将css中的资源地址转为绝对地址, 比如:
.btn_close {
background: url(./icon_close.png)
}
转为
.btn_close {
background: url(/img/icon_close.png) /* abs path */
}
例如:@import "/common/css/class.less"
上述写法找不到对应文件
将现有语言的支持拆解出来,变成独立的node_module,方便用户自定义。
在开发和编译过程,都将带来一些方便
cache提供快捷方法查找未加载/未执行的资源
If js file not exist, load coffee; If css file not exist, load less;
--XX
| --d-chart
|-- src
|--util
|-- index(用underscore,找不到)
|-- node_module
|-- underscore (没有了)
--underscore(理应找这里)
当出现极端情况的异常时,.cubecache中的代码需要被清理,需要提供一个便捷的方式。
目前设想的方案,在页面上提供一个浮动小图标,点击清理并刷新页面
Line 1 in 8cf10dd
升级 esprima到 v3.1.3 支持 es6的语法
rt 希望能在前段展示
希望增加前端js打包合并压缩的功能 并可以有是否uglify、css的压缩策略等压缩选项。
cube 前端会执行函数内部并不执行的require,造成一些库不能运行
打包时对 css 文件中 url(...)进行了转换,即使配置了 skip、ignore 还是没有跳过
需要增加配置运行跳过这个步骤,css 原文输出
.jade文件支持便以为html
.ejs 还需要check一下是否有必要
对于返回类型、寻址问题,还需要在梳理一下
debug 模块browser.js line8: require('./debug')
没有提取到依赖列表
debug v2.2.0
testcode:
Cube.use('a.js', function (a) {
Cube.use('a.js', function () {
// TODO something
});
});
自动跳过没有require到的资源
这样的话可能需要指定入口文件
或者像Loader一样扫描html
支持类似形式的路径分析
require('./' + variable + '.jade');
require('./path_' + variable + '/config.js');
部分支持类似形式的路径分析
async(variable + '.jade'); // 默认variable在最前的情况,为绝对路径,不做相对路径计算,只改变后缀
async(variable); // 默认为全局变量, 考虑是否嵌套方法处理变量
..
将模块的执行顺序由叶子模块->根模块
修改为根模块->叶子模块
好处:无需解循环引用的问题,发生循环引用时按node的逻辑处理
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.