在我从 webpack 切换到 brunch 之前,我从来没有真正考虑过它,我在 index.html 中看到了以下几行:
<script type="text/javascript">
require('main');
</script>
当您尝试简单地打开本地 html 页面时(即使在 webpack 中构建了所有内容之后),它也会产生错误(SCRIPT5009: SCRIPT5009: 'require' 未定义)并且无法正确呈现,但是当您通过以下方式打开页面时它正确呈现的开发服务器。
为什么捆绑器需要开发服务器?开发服务器在幕后做了什么以允许浏览器正确呈现带有捆绑包的页面?渲染能力不是内置在浏览器本身吗?
本来我以为是搭个node server来帮助翻译require()之类的命令,但是上面显示的是该行是通过浏览器传递过来的。为什么当您打开 html 文件而不是通过服务器传递时,浏览器会在该命令上阻塞?
附带说明一下,当页面也通过 apache 交付时,一切正常。如果是某种节点翻译,那么 apache 怎么不窒息呢?
编辑:
显示已交付的文件是:
logo.png (只是一个 vue 标志) app.js (捆绑的 javascript 文件) html 文件,它看起来像:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>vue-webpack-brunch</title>
</head>
<body>
<div id="app"></div>
<script src="/app.js"></script>
<script type="text/javascript">
require('main');
</script>
</body>
</html>
一切都是这样交付的,这就是项目的范围。如果 javascript 包包含 requirejs,那么如果您也只是在本地打开文件,它也应该可以工作
编辑2:
在控制台中输入 require 会产生以下结果:
(t,r){null==r&&(r="/");var i=l(t);if(o.call(n,i))return n[i].exports;if(o.call(e,i))return u(i,e[i]);throw new Error("Cannot find module '"+t+"' from '"+r+"'")}: