JSPM 中的无名要求

Nameless requires in JSPM

本文关键字:无名 JSPM      更新时间:2024-03-07

基本问题,我试图将我的 webpack 项目转换为 jspm,其中我根据站点的当前视图加载 JS,如下所示:

    var currentView = document.body.getAttribute('data-jscontroller');
    if ( currentView ) {
        var viewPath = './views/' + currentView;
        require( viewPath );
        App.Views[currentView].init();
    }

不幸的是,这返回了一个错误:

es6-module-loader.js:7:26213
TypeError: Module ./views/home not declared as a dependency.

所需文件的内容是一个简单的对象,该对象只是使用加载视图的应用程序功能的事件订阅者构建一个对象。

有没有办法实现这一目标?

事实证明require是静态解析的,因此它们不允许在其中使用 js 变量。对于这些情况,有System.import

var currentView = document.body.getAttribute('data-jscontroller');
if ( currentView ) {
    var viewPath = './views/' + currentView;
    System.import(viewPath).then(function(){
       App.Views[currentView].init();
    });
}