javascript - 可以加载返回数据的 webpack 模块,还是只加载执行语句的模块?
问题描述
我正在尝试在项目应用程序中实现客户端路由器,使用 vanilla webpack 更好地了解 webpack 的工作原理。所以我想出的路由器非常简单,可以加载可以很好地执行语句的模块。但是返回字符串的模块,例如将用于模板标记的字符串,则不会。
路由器
export default function Router(Routes) {
function loadRoute(routeName) {
const route = matchRouteObject(routeName)
route.component()
}
const matchRouteObject = function (name) {
const matchedRoute = Routes.find((route) => {
return route.name == name
})
return matchedRoute
}
return {
loadRoute: loadRoute,
}
}
路线
export default [
{
name: 'root',
component: () => import('@/app/home/main.js'),
},
{
name: 'canvas',
component: () => import('@/app/canvasExample/main.js'),
},
{
name: 'svg',
component: () => import('@/app/svgExample/main.js'),
},
]
加载的模块
export default function home() {
let constructor = function () {
const main = document.querySelector('main')
main.insertAdjacentHTML('afterbegin', '<h1>your world from root</h1>')
}
return {
init: constructor(),
}
}
let Home = home()
不加载的模块
export default function mainSVG() {
let constructor = function () {
return '<h1>hello world from svg</h1>'
}
return {
init: constructor(),
}
}
let MainSVG = mainSVG()
当我尝试将其设置为使用此模块时,即不加载,我调整 loadRoute 功能,如
function loadRoute(routeName) {
const main = document.querySelector('main')
const route = matchRouteObject(routeName)
main.insertAdjacentHTML('afterbegin', route.component())
}
当我尝试这样做时发生了什么,而不是 loadRoute 函数将从模块返回的字符串附加到 dom,它只是读取 [object Promise]
解决方案
推荐阅读
- c - 有没有办法通过 AutoBench 比较 Haskell 和 C 函数?
- python - nltk 已经安装成功了,怎么还不能导入?
- regex - 正则表达式匹配没有斜杠的 URL,也没有文件扩展名
- php - php 开发服务器中 MODx 的友好 URL
- mongodb - Mongodb $project 根据值名称从数组中删除元素
- ios - 如何在自定义应用内键盘(Swift 4)中链接 XIB 按钮
- twilio - twilio 组合需要 15、20 分钟或更长时间的状态 Enqueued
- watch - 如何给 Consul 手表添加标签
- python - 我得到一个```AttributeError:'int'对象没有属性'cityArray'```
- ios - Swift 5 - 拦截所有选择器