ecmascript-6 - 如何使用 esm 创建带有汇总的“胖”js 文件?
问题描述
我有以下代码..
// ui.js (generated by rollup
import Vue from 'vue';
import VueRouter from 'vue-router';
(()=>{
console.log("Wow it actually works");
Vue.use(VueRouter);
const routes = [
{
path: '/',
component: Viewport
}
];
const router = new VueRouter({
mode: "history",
routes: routes
});
window.app = new Vue({ router });
window.app.$mount('#jg-app');
})();
<script src="ui.js" type="module"> </script>
问题是当我运行它时,我得到...
未捕获的类型错误:无法解析模块说明符“vue”。相对引用必须以“/”、“./”或“../”开头。
这让我相信我需要一个包含依赖项的“胖”js。
我还想将所有内容都保留在 es6 模块中,避免引入 say babel。
有没有办法使用汇总来做到这一点?
更新
试过这个...
import Vue from "./vue";
但后来我得到...
错误:无法从 src/index.js 解析“./vue”
解决方案
据我所知,这是不可能的。相反,我不得不将导入从 ui 项目移动到服务器项目并创建一个看起来像这样的静态 js 文件......
//client
import Vue from "./vue"
let app = new Vue(...);
app.$mount('#jg-app');
并导入 esm.browser 版本
// server
app.use('/vue', express.static(__dirname + '/node_modules/vue/dist/vue.esm.browser.js'));
// template
script(src="/main.js" type="module")
现在 Vue 正在工作,但是,像 Vue-Router 这样的依赖项似乎没有这个 es.browser 样式文件。
推荐阅读
- python - 真实道路的 OSM 几何,而不是节点和边
- junit5 - 如何构建 JUnitTests?
- symfony - Symfony 5.2 Form CollectionType 未按顺序呈现嵌入的表单字段
- api - 在邮递员 API 中过滤数据
- java - Spring data - 删除与视图相关的抑制
- django - Algolia 排名边缘案例
- angular - KonvaJS - 可拖动的无限网格舞台
- javascript - 为什么我的立方体显示的距离是光标的两倍?
- python - 用特殊字符编码密码
- javascript - app.post('/login') 总是无法验证用户身份