Javascript 为什么基于web的前端绑定器需要开发服务器
我从未真正想过这一点,直到我从webpack切换到brunch,在index.html中看到以下几行:Javascript 为什么基于web的前端绑定器需要开发服务器,javascript,html,webpack-dev-server,Javascript,Html,Webpack Dev Server,我从未真正想过这一点,直到我从webpack切换到brunch,在index.html中看到以下几行: <script type="text/javascript"> require('main'); </script> require关键字给出了错误,因为它是一种要求外部文件的虚构方式。如果您使用标准的本机实现import,它将在较新的浏览器上开箱即用。不需要绑定器 要求来自 他们正在寻找单词require,本质上,就是将源路径上的代码注入到构建文
<script type="text/javascript">
require('main');
</script>
require
关键字给出了错误,因为它是一种要求外部文件的虚构方式。如果您使用标准的本机实现import
,它将在较新的浏览器上开箱即用。不需要绑定器
要求来自
他们正在寻找单词require
,本质上,就是将源路径上的代码注入到构建文件中。这就像我为我的InjectFileJS
项目制作了一个injectFile
关键字一样
<script type="text/javascript">
injectFile('main');
</script>
注入文件('main');
这将产生相同的错误,因为injectFile未定义。您需要在web服务器上运行“我的组合文件加载器”来解析和传输文件,该函数才能存在
但是,如果您使用import
,您可以在新浏览器上不需要捆绑程序:
您正在加载/app.js
,它将定义您的require
功能
URL以/
开头
如果从Web服务器加载,则/
引用站点的根目录
如果从本地文件系统加载,则
/
指的是文件系统的根目录(如果是Windows,则指磁盘)。这将是错误的位置,因为webpack不会在那里生成它(您不希望为使用webpack构建的每个应用程序创建c:\app.js
。“它会产生错误”-读取错误可能会提供线索!可能是它的副本不一样,你显然没有读我的问题。我试图理解web服务器做了什么,而仅仅打开一个文件却没有。上面的错误只是说require没有定义,它没有解释web服务器如何定义它或修复它“您显然没有阅读我的问题”-您显然没有阅读可能的副本。请再试一次,看看问题的解决方案是“使用Web服务器”。你也没能提供一个答案,这就是为什么我用模糊的推测来评论,而不是结束问题或回答问题。你显然没有阅读我的问题,因为我已经理解你需要一个web服务器,我正在试图理解为什么。这并不含糊,您需要web服务器进行捆绑,我正试图了解原因。你提供的链接只是说“使用网络服务器”,这并没有回答我的问题,为什么要投反对票?这从字面上回答了确切的问题?问题是“为什么使用Web服务器可以解决这个问题?”。这并不能回答这个问题,它只是解释了为什么require
是未定义的,除非完成了“某事”。它没有解释为什么使用web服务器会定义require
。我没有否决,所以像apache这样的web服务器本机就包含了requirejs?因为它在从web服务器(如apache@DavidTorrey-“所以像apache这样的web服务器本机就包含了requirejs”-不,它们没有。@Quentin补充了一点细节,提到在web服务器上传输我认为这是有效的,我删除了/并将其作为一个相对引用,但它只是说“语法错误”,哦,我在那里也输入了一个错误。好的,所以包是包含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+"'")}:
<script type="text/javascript">
injectFile('main');
</script>
<script src="/app.js"></script>