V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  aligo  ›  全部回复第 15 页 / 共 26 页
回复总数  516
1 ... 11  12  13  14  15  16  17  18  19  20 ... 26  
2011-04-29 11:53:03 +08:00
回复了 real_newbie 创建的主题 JavaScript 关于CommonJS中Module实现的问题
@kuno 我试了一下
bar.js:
var foo = 'bar'

exports.bar = function () {
return foo
}

foo.js:
require.paths.unshift('.')

var bar = require('bar')

console.log(typeof bar.foo == 'undefined')
console.log(typeof bar.bar == 'function')

console.log(bar.foo)
console.log(bar.bar())


node foo.js结果是:
true
true
undefined
bar

这里新require进来的js并不是一个global scope,如果拿来和ruby比较的话
module Bar
BAR = 'bar'
def ...
end
然后在别的地方是可以Bar::BAR的
其实和c差不多,fopen的时候使用b(b一定要加在r啊w之后),强制进入binary模式
2011-04-29 08:07:47 +08:00
回复了 n2n3 创建的主题 问与答 这个页面下面那些链接是怎么回事呢?
@lychee 恩,确实可以用带name属性的a标签对应

不过一般用法还是直接和id对应,另外id和name共享的是一个命名空间,如果你用了一个top的name,那么就不能用为top的id了
2011-04-28 21:13:25 +08:00
回复了 real_newbie 创建的主题 JavaScript 关于CommonJS中Module实现的问题
@real_newbie 恩,这个东西well-scoped module就是用define()包裹新加入的js,类似我刚才说的do_export()

不过一般用用直接插入script标签就够了,不过意义不大,因为这增加了http请求次数,一般需求都是把js合并后各种压缩成一个
2011-04-28 20:56:04 +08:00
回复了 real_newbie 创建的主题 JavaScript 关于CommonJS中Module实现的问题
@real_newbie 主要是你提到了yui,我以为你要在前端实现这个require,于是劝你放弃
2011-04-28 20:54:06 +08:00
回复了 Livid 创建的主题 程序员 生命不息,挖坑不止
@Sai -A-没看到你的手和脚,就看到一个头准备倒插入坑
2011-04-28 20:52:50 +08:00
回复了 real_newbie 创建的主题 JavaScript 关于CommonJS中Module实现的问题
@real_newbie 恩,其实就是前端要实现require动态载入js的话,就是动态插入script标签,必然事先得提供一个do_export函数用来接受闭包
2011-04-28 20:44:37 +08:00
回复了 Livid 创建的主题 程序员 生命不息,挖坑不止
如果专心只挖一个坑,便会把地球挖穿,大洪水会去淹没另外一个半球啊
2011-04-28 20:42:03 +08:00
回复了 real_newbie 创建的主题 JavaScript 关于CommonJS中Module实现的问题
@real_newbie 恩,我只是和你地址里的那个代码实现一样的东西var add = require('math').add;而不是var add = require('math').add();

不过扯远了,我要说的是module这东西,用来实现通过scope进行访问控制是可以的,就像yui那样

然后如果前端使用它是为了分开文件就没有必要了,而这里的require实现的包括exports,对于每个文件是相互独立的,实现原理应该就是#7的那样,对于不同环境当然有不同实现,不过你这样去理解就够了
2011-04-28 20:29:11 +08:00
回复了 real_newbie 创建的主题 JavaScript 关于CommonJS中Module实现的问题
订正:
exports.add = fuction() {
var args = arguments;
return (function(args) {
var sum = 0, i = 0, l = args.length;
while (i < l) {
sum += args[i++];
}
return sum;
})(args);
};
2011-04-28 20:28:32 +08:00
回复了 real_newbie 创建的主题 JavaScript 关于CommonJS中Module实现的问题
恩,你这个意思我明白,是要在exports.add有似有变量吧,不过你这个也不对,应该是:
exports.add = fuction() {
var args = arguments;
return (function(arguments) {
var sum = 0, i = 0, l = args.length;
while (i < l) {
sum += args[i++];
}
return sum;
})(arguments);
};

但是我上面说的是,你要给前端使用的话,只有在上面这段代码的东西的基础上,再包裹
do_export(function(){
var exports = {};
上面的代码
return exports;
});

同时预先定义好do_export,用以接受require发出的http jsonp请求,但是这里有一个问题,浏览器的js貌似要blocking i/o等待require发起的异步请求返回是一件相当麻烦的事情了

不知道你看懂了我说的没有。。。
2011-04-28 20:08:05 +08:00
回复了 real_newbie 创建的主题 JavaScript 关于CommonJS中Module实现的问题
@real_newbie 一样是闭包,不过如果那玩意要在客户端使用require,必须是像jsonp一样,完整的代码是:
do_export(function(){
var exports = {};
然后这里执行js文件里的代码
return exports;
});

不过这样的动态载入无故增加http请求数量,实在多余,一般是把所有js文件打包成一个,压缩之后要求客户端缓存
2011-04-28 19:59:37 +08:00
回复了 real_newbie 创建的主题 JavaScript Mustache.js中的Streaming是什么意思, 一般用在哪, 怎么用?
@real_newbie 不客气
这个东西对于前端使用不大,会导致dom树出错
但是例如写入文件或者返回tcp,一样是流就有用了
2011-04-28 19:56:22 +08:00
回复了 real_newbie 创建的主题 JavaScript 关于CommonJS中Module实现的问题
CommonJS的那个require应该就是
function(jsfile){
var exports = {};
然后这里执行js文件里的代码
return exports;
}
2011-04-28 19:52:24 +08:00
回复了 real_newbie 创建的主题 JavaScript Mustache.js中的Streaming是什么意思, 一般用在哪, 怎么用?
就是流嘛,每输出一行会调用一次那个callback
2011-04-28 19:47:06 +08:00
回复了 real_newbie 创建的主题 JavaScript 关于CommonJS中Module实现的问题
数据封装是什么意思?
一般控制访问的话,return返回的是一个匿名函数或者对象,作为闭包,可以访问scope的东西,但是调用那个module的时候就用不了了

yui的module就是基于这个基本原理包装起来的,这样就不会因为随便操作一般对象的prototype产生问题
2011-04-28 19:33:52 +08:00
回复了 Mianco 创建的主题 摄影 台湾的蛙大的新作品:风的颜色
哇,看LZ的介绍很有意思,不过那个地址打开除了下面一行链接都是黑黑的。。。
@zhaoyafei 恩,至于用哪个方法找出是哪个文件,你自己看书找吧
@zhaoyafei 用ReflectionClass的getStartLine方法,就可以找到是在哪一行了开始定义那个类了
你可以
echo new ReflectionClass(get_class($D));
看看
1 ... 11  12  13  14  15  16  17  18  19  20 ... 26  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2949 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms · UTC 13:06 · PVG 21:06 · LAX 05:06 · JFK 08:06
Developed with CodeLauncher
♥ Do have faith in what you're doing.