javascript - 如何在内联 javascript 上使用 webpack 模块
问题描述
我是一个缺乏经验的 Web 开发人员,尤其是在涉及 JavaScript 时。最近我一直在尝试解决这个问题,并且由于 Laravel 是我选择的框架,我正试图改变“旧”的风格:
<script src="script1.js"></script>
<script src="script2.js"></script>
…
更好的东西。而使用 Laravel,合乎逻辑的步骤是使用依赖于 Webpack 的 Mix。
经过大量的试验和错误,我已经设法使基本设置正常工作。我有一个 settings.js 文件,用于在必要时更改模块的默认设置,还有一个 app.js 文件,用于我想在每个页面上提供的自定义功能。我还将供应商模块分离到 vendor.js 文件中。
所以 bootstrap.js 文件有:
window._ = require('lodash');
window.$ = window.jQuery = require('jquery');
[...]
require('bootstrap-datepicker');
require('bootstrap-year-calendar');
webpack.mix.js 文件有:
mix.autoload({ jquery: ['$', 'jQuery', 'window.jQuery']});
mix.webpackConfig({ resolve: { alias: { jquery: "jquery/src/jquery" }}});
mix.js([
'resources/js/app.js',
'resources/js/settings.js'
], 'public/js')
.extract([
'lodash',
'jquery',
[…]
'bootstrap-datepicker',
'bootstrap-year-calendar'
]);
主布局在`之前有以下脚本:
<script src="{{ mix('/js/manifest.js') }}"></script>
<script src="{{ mix('/js/vendor.js') }}"></script>
<script src="{{ mix('/js/app.js') }}"></script>
此设置似乎有效,但最后一个问题我似乎无法弄清楚。我还在特定页面上添加了一些 javascript,用于仅限于这些页面的功能(使用非默认设置、自定义表单行为等初始化选择器)。所以有些页面之前有一个额外的<script type="text/javascript"> [custom code] </script>
部分</body>
。
但是,那里的代码无权访问模块:$('.input-daterange').datepicker();
应该将输入初始化为 bootstrap-datepicker 实例,但事实并非如此。当然,使用它的“旧样式”。现在,我遇到了一个TypeError: undefined is not a function (near '...$('.input-daterange').datepicker...')
错误。
所以我的问题如下:如何导入嵌入在 HTML 文件中的脚本中使用的必要模块?
PS:当我写完这个问题时,我偶然发现了解决方案。尽管如此,我还是决定发布它,因为 a) 它可能对其他人有所帮助,并且 b) 如果有更好的方法来解决这个问题,我很想听听。
解决方案
不是在嵌入的 javascript 上而是在我的app.js
或settings.js
文件上进行导入,使其工作:
import 'bootstrap-datepicker';
import 'bootstrap-year-calendar';
但是,进行导入settings.js
而不是app.js
似乎会导致一些问题,因为它破坏了一些单独的功能。我不确定是不是因为app.js
在webpack.mix.js
文件中首先列出(如下所示),但是您进行导入的文件确实很重要。
mix.js([
'resources/js/app.js',
'resources/js/settings.js'
], 'public/js')
推荐阅读
- angular - 模拟类属性时,Jasmine 不显示模板内容
- python - 在 Pytorch 上使用多个 GPU
- c++ - 如何以编程方式在 C++ 中创建多个结构
- javascript - React + JavaScript:项目出现在控制台上但随后消失
- python - 每 N 秒使用 DataFrame 自动刷新 div
- css - 通过css旋转图像,图像保持垂直空间
- machine-learning - 计算机可以通过分析别人的游戏来学习游戏的策略吗?
- sql-server - 当有更多字段时,SQL Server 索引扫描?
- sql - 使用 ID 连接两个 SQL 表,其中 ID 是文本
- recursion - 编写一个递归函数,用伪代码总结值的数量,奇数二进制数为 1