如何为具有自动浏览器+丑化的浏览器提供 node.js 代码
how to serve node.js code for browsers with automatic browserify+uglify
我有一些用于节点的纯js代码.js有5个文件:
+--compress.js
+--util
+--vector.js
+--map.js
+--set.js
+--util.js
然后压缩.js require
s set.js 和 util.js,set.js require
s map.js这又require
s 向量.js和 util.js现在,我想从我自己的简单Web服务器(快速应用程序)为浏览器提供此代码。我有哪些选择?我是新手,所以我有一些基本问题,而不是那么基本的问题。如果我想从我的 html 页面包含压缩.js,我想知道可能的选项。据我了解,我可以修改代码以与node.js和浏览器兼容。我用什么来做,require-js?当代码与服务器端和客户端兼容时,在nodejs中如何调用它?另一种选择是使用browserify并生成一个可以在客户端使用的压缩版本.js。
然后,有 uglify-js 可以缩小该压缩.js文件(并创建相应的映射文件),对吧?
现在我的目标是保持我的 js 代码不被修改并且可以从浏览器访问。为此,据我了解,我必须编写服务器端代码,自动浏览器化这些文件(例如,以正确的顺序连接它们)并通过 uglify 传递结果并即时提供结果。根据我的理解,这样如果我只包含一个文件压缩.js并尝试在 chrome 中调试该代码,我将在 chrome 调试器中看到,就好像我以 nodejs 样式的方式将所有这些文件按原样包含在 chrome 中一样包含依赖项。我是对的吗,我需要使用什么工具/库来实现这一点?
下一步是以这样一种方式缓存该动态转换的结果,以便如果我修改任何包含的文件(例如,如果我在实时服务器上编辑它们或完全替换为修改后的版本),所有依赖文件将自动需要重新生成。这可能会发生在下一次 GET 压缩时.js(例如,在内部我需要在我的应用程序依赖项图中记住并在每个GET /compress.js
上验证它),或者,或者,我需要添加某种文件系统/操作系统事件钩子,当任何文件发生更改时,它会在我的应用程序中触发一个事件,该事件将触发我的压缩的重建浏览器化+丑化版本.js(或任何其他文件)。是否有任何现有的选项可以在node中执行类似的事情.js或者我需要自己实现所有这些(在这种情况下,我应该研究哪些libs工具?
- 看起来这会产生我想要的(带有地图的浏览器化+丑化版本): https://github.com/gulpjs/gulp/blob/master/docs/recipes/browserify-uglify-sourcemap.md
我将尝试给你一个非常基本的想法。我会创建一个名为"public"的新文件夹。在公共内部还创建两个文件夹:类似于"assets"和"dist"。资产将包含未压缩的文件。你会把压缩.js放进去。Dist 将包含压缩文件。你现在没有它们。
现在创建应用程序.js。在应用内部.js包括 http://expressjs.com/或 http://koajs.com/。我个人使用 koa,因为它是基于 ES6 的。现在在您的应用程序中使用模块来提供静态文件。此模块还将关注缓存。以 koa 为例 https://github.com/koajs/static。然后整个应用程序将是
var koa = require('koa');
var app = koa();
var static = require('koa-static');
app.use(static("/path_to_your_project/public/dist"));
app.listen(3000);
现在是最后一块。您将需要 http://gulpjs.com/或 http://gruntjs.com/将 js 资产压缩为缩小版本。还可以使用 https://github.com/deepak1556/gulp-browserify 来改进您的模块。任务将是这样的(非常近似):
gulp.task('jsassets', function(){
return gulp.src(['public/assets/*'])
.pipe(browserify({ insertGlobals : true, debug : !gulp.env.production }))
.pipe(uglify())
.pipe(gulp.dest('public/dist'))
});
然后创建索引.html dist. 像往常一样将您的结果文件包含在那里 javascript。运行您的应用程序.js作为节点应用程序.js 在 localhost:3000 打开的浏览器。应该看到您的代码在浏览器中执行。我没有对此进行测试,因此调试取决于您。
利润。
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- 如何使用手机浏览器上的按钮拨打USSD代码
- JavaScript代码,用于在浏览器中显示字节数组中的PDF文件(非base64编码)
- 检查浏览器'在asp.net的后端代码中启用或禁用了s JS
- 如何修复在浏览器中打开后出现在屏幕上的html/Javascript代码
- 使用现有代码更改基于浏览器宽度的图像url
- 如何在jQuery.CSS()方法中为所有浏览器编写CSS代码
- 无法使用firefox在浏览器中运行此代码
- 安卓版本的代码不像桌面互联网浏览器那样工作
- 链接适用于所有浏览器,除了 safari(php 代码)
- 根据浏览器屏幕大小和媒体查询执行 php 代码
- 使用Safari浏览器调试Firebreath代码
- 为什么浏览器上的后退按钮会破坏此代码?它的作用与此相反
- 是否可以向用户发送javascript代码's浏览器安全
- 浏览器中未运行Javascript代码
- 这个AngularJs代码有什么问题-在浏览器代码编辑器- Nodejs中
- 使用webpack,我可以把Node.js和浏览器代码放在同一个文件中,但防止Node.js代码进入浏览器吗?
- 代理连接到XML跨服务器.使用Ajax可以在某些浏览器上工作,而不是其他浏览器?代码包括在内
- node.js和浏览器代码重用:将常量导入模块