我使用sails(http://sailsjs.com)开发一个小平台。文档之后一切顺利。但是对这个javascript框架世界和npm等新手来说,我一直有麻烦,包括其他node_modules,并在.ejs视图中使用它们......我知道并不是所有的模块都包含在视图中,但怎么可以我设法包括一些? 试图使用https://www.npmjs.com/package/vue-slider-component 非常感谢您提前抱歉,如果这个错误显然是愚蠢的。SailsJS在视图中包含node_module
回答
你的困惑是可以理解的。问题在于,直到最近,安装在node_modules
中的东西才完全用于后端的代码;即您的Sails.js控制器操作,模型等。毕竟,node_modules
文件夹右侧有单词“节点”,它创建用于NPM(节点程序包管理器)以帮助组织节点(即服务器端 JavaScript)文件!
尽管很多前端插件已发布在Bower上,但更新的框架(如Angular 2和Vue)经常会将它们的插件发布到NPM上,因为它减少了应用程序的移动部件数量。问题是,如果您尝试在服务器呈现的.ejs
视图中尝试require('vue-slider-component')
,那么服务器(即Sails.js)将尝试在呈现视图之前加载并运行该代码,其中您真正想要的是该插件在浏览器中运行。
长期的解决方案是使用诸如Browserify或Webpack之类的东西将所有前端JavaScript文件编译为“包”。因此,举例来说,如果你有一个像assets/js/my-vue-app.js
一个文件,其中包括行:
import vueSlider from 'vue-slider-component/src/vue2-slider.vue'
然后Browserify会看到那行,加载了该vue2-slider.vue
文件,将其添加到my-vue-app.js
文件的顶部,执行一些其他的魔术,将它与您的其他前端.js文件结合起来并输出一个文件,如browserified.js
,然后您将通过<script src="/path/to/browserified.js">
包含在您的HTML中。
由于新的Sails应用程序使用Grunt将这些<script>
标记组织并注入到您的视图中,因此您可能会有点困惑,因为您将如何获得像Browserify或Webpack这样的工具来处理Sails。对于Sails 1.0,使用Webpack代替Grunt有seed project。对于Sails v0.12.x,你将不得不谷歌搜索一些使用Sails的Broswerify或Webpack的例子。
一个短期的解决方案,并且从长远来看,可能不那么容易维护,是对minified vue-js-slider component的内容保存到你的资产的文件夹(例如,作为assets/js/vue-slider-component.js
),它与<script src="/js/vue-slider-component.js">
和访问它添加到您的HTML你代码为window['vue-slider-component']
。
- 1. SailsJS Waterline中的“不包含”查询
- 2. SailsJS jQuery不能在视图中工作
- 3. 如何在webpack中包含这个node_module的.html资源?
- 4. 在列表视图中包含图像
- 5. 在视图中包含.rb文件
- 6. 如何在视图中包含组合?
- 7. 如何在Odoo中包含视图8
- 8. 在视图列中包含一组行
- 9. 获取子视图包含视图
- 10. 包含视图内的其他视图
- 11. 查看:包含在一个视图中的多个视图
- 12. 如何在包含视图的视图中继承DataContext?
- 13. 如何在cakephp的另一个视图中包含视图
- 14. Swift:在超视图中查找视图(不包含for循环)
- 15. 包含列表视图
- 16. Nodejs包含其他视图?
- 17. 在提取数据后包含视图
- 18. 在Django包中包含Django视图和模板
- 19. 翻转视图设置中包含的视图
- 20. Android OnGestureListener问题当视图中包含一个列表视图
- 21. 在HAML视图中包含字体 - 真棒图标
- 22. 在Java中包含图像
- 23. findViewById在自定义视图中返回null,其中包含子视图
- 24. 在布局中包含Laravel 5.3视图中的PHP变量
- 25. SailsJS - CORS - 'Access-Control-Allow-Origin'标题包含无效值''
- 26. 在Sailsjs
- 27. Django:如何将一个视图的输出包含在另一个视图中?
- 28. CI:在另一个包含视图中使用视图/控制器?
- 29. 在CodeIgniter中包含从一个视图到另一个视图的内容
- 30. 如何在codeigniter的另一个视图中包含视图文件和变量
感谢这个惊人的解释。我已经设法使用webpack,在根项目上创建一个bundle.js,然后使用webpack将它编译为资产,无论何时使用帆升降机。这样我可以在浏览器中需要一些东西。包括vue插件等。这是我只能赞扬一次的耻辱。 –