通过 Browserify 加载 HTML 模板以与 knockout 组件一起使用

Load HTML Template for use with knockout component via Browserify

我正在使用 browserify 和 knockout 并尝试为 knockout 组件模板加载 html 文件。我已经 browserify 成功加载 javascript 个文件,但我不清楚如何让它加载 html 个文件。

我正在尝试做这样的事情:

(function() {
  var ko = require('./lib/knockout/dist/knockout.js');
  var authenticationViewModel = require('./viewmodels/authentication.js');
  var authenticationView = require('./views/authentication.html');

  ko.components.register('authentication', {
    template: authenticationView,
    viewModel: authenticationViewModel
  });
})();

但是模板显然没有加载。有人可以向我解释一下这是如何实现的吗?

这就是我的 gulpfile.js 让 browserify 与 .js 文件一起工作的方法:

  gulp.task('browserify', function () {
    var browserified = transform(function(filename) {
      var b = browserify(filename);
      return b.bundle();
    });

    return gulp.src([paths.appJs])
      .pipe(browserified)
      .pipe(gulp.dest(paths.public));
  });

我正在研究 html-browserify 插件: https://www.npmjs.com/package/html-browserify

他们使用的示例如下所示:

gulp.task('js', function() {
  gulp.src('js/app.js')
    .pipe(browserify({
      insertGlobals: true,
      transform: html
    }))
    .pipe(concat('app.js'))
    .pipe(gulp.dest('./public/js'));
});

但我不清楚如何将此示例与我当前已经运行的代码相协调。

brfs应该是一个选项。

在我自己的一个应用程序中,我使用 gulp 读取一些模板文件,将它们组合成一个对象,并编写一个 JSON 文件,我将其加载到我的(浏览器化的)应用程序中。

我最终找到并使用了 partialify。它非常适合导入 html 文件作为依赖项。

  //Gulp Plugins
  var gulp = require('gulp');
  var browserify = require('browserify');
  var source = require('vinyl-source-stream');
  var partialify = require('partialify');

  //Browserify
  gulp.task('browserify', function() {
    return browserify()
      .add(paths.browserifyEntry)
      .bundle()
      .pipe(source('main.js'))
      .pipe(gulp.dest(paths.public));
  });