我是否只是忽略了某些浏览器提供的功能,或者这个库是否使用了一些奇怪的解决方法来实现这些功能?
答案 0 :(得分:2)
实际上,它既不是也不是; - )
基本上,简单的答案是:Browserify不会将所有内容带入浏览器,只是从技术角度看实际有意义且可行的内容。
例如,您可以轻松拥有
url.format(...)
在浏览器中,因为这意味着只处理内存中的对象和字符串,但是你不能拥有
http.createServer(...)
因为这根本不起作用。除此之外,Browserify还为require
和module.exports
提供填充程序,因此您也可以在浏览器中使用CommonJS模块,但只要它们坚持那里可用的东西。同样,例如,无论是否使用Browserify,任何用C ++编写的CommonJS模块都无法在浏览器中运行。
最后,Browserify使用几个基本上与Node.js API兼容的模块,但是已经为浏览器重写了,例如: http-browserify
所以,最后,它是所谓的“同构JavaScript”的一个很好的工具,换句话说:在服务器和浏览器中使用CommonJS模块,而不需要任何一方的特殊模式,例如作为AMD或UMD。
但是,当然,它没有提供任何魔力: - )
答案 1 :(得分:0)
Browserify不会为您的浏览器添加功能。它编译你的Node.js代码,以便它可以在浏览器中运行。
简而言之,Browserify允许您在浏览器端代码中使用Node textarea
;它不会授予您的浏览器访问它尚未拥有的网络和文件系统的能力。
相反,您需要使用(或编写)模拟服务器端功能的自定义模块。例如,如果在服务器端代码中使用数据库模块(例如,Postgres或Mongo),则可以编写一个新的数据库模块(使用与服务器端模块相同的API),该模块使用浏览器支持的存储机制,如索引资料。