如何使用 Browserify 和 Gulp 启动多页面应用程序

Posted

技术标签:

【中文标题】如何使用 Browserify 和 Gulp 启动多页面应用程序【英文标题】:How to boot a multi-page app with Browserify and Gulp 【发布时间】:2017-09-10 19:06:01 【问题描述】:

好的,我使用 Gulp 和 Browserify 构建的新 php/JS 应用程序即将完成。最后一部分是如何“启动”,我的意思是如何进行“第一次调用”。

假设我有 3 个 JS 入口点

/js/articles.js
/js/categories.js
/js/comments.js

他们每个人都使用一些 JS 模块。 然后我有 3 个 html 文件,需要他们的 JS

/articles.html
/categories.html
/comments.html

示例 /js/articles.js

var $ =                 require("jquery");
var common =            require("../common.js");

var viewModel = 

    readData: function() 
        /* read record from API and render */
    ,

    insert: function() 
        /* open a modal to insert new record */
    
;

我现在应该做的是执行这种“启动”:即调用一些我需要的初始化函数,然后加载服务器数据,然后将所有按钮和东西绑定到 viewModel 的方法

$(document).ready(function() 
    common.init();
    viewModel.readData();
    $('#btn-add').click(viewModel.insert);
);

好的,但是我该把它放在哪里呢?

A) 在 HTML 文件中? 我不能因为我没有任何全局 JS 变量可以访问..

B) 我是否将其放入articles.js 中? 目前,我的 Gulp 任务会将所有内容(articles.js、categories.js、cmets.js、公共库)捆绑到单个 bundle.js 中。 如果我将它放入articles.js,它将最终放入bundle.js。因此,与文章相关的引导内容也将在“类别”页面中调用。这是错误的。

C) 我是否应该将articles.js 拆分为2 个文件,一个包含viewModel 定义,另一个包含$(document).ready 的内容?...但我又该如何访问正确的viewModel?

哪个是正确的解决方案?

谢谢

【问题讨论】:

这个答案可能会有所帮助:***.com/a/23836379/2661028 【参考方案1】:

似乎您的 gulp 任务只会将所有条目连接到 bundle.js 中,因此您可能只需添加另一个名为 js/index.js 的条目并将初始化代码放入其中。

令人困惑的是,您的代码将被执行(基于您在 B 中的描述),即使您没有对其调用 require。你能提供你的 bundle.js 和你的一个 html 文件吗?

【讨论】:

以上是关于如何使用 Browserify 和 Gulp 启动多页面应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 typescript / gulp / browserify 导入 npm 模块

任务运行程序(Gulp、Grunt 等)和捆绑程序(Webpack、Browserify)。为啥要一起使用?

javascript 使用Babel,Browserify和Gulp的新ES6项目

我应该如何使用 browserify 和 babelify 转换 ES6 node_modules?

使用gulp+Browserify构建React应用

如何定量分析前端主流的构建工具(Webpack/Rollup/Parcel/Browserify+Gulp)?