Javascript 在PHP中镜像Vue组件而不使用Web包/捆绑包
我正试图在我的公司使用Vue。目前我们没有使用任何Javascript构建工具,比如Webpack。这意味着没有巴别塔(巴别塔也不是一个选项)。NoBabel意味着没有模板文字(```),这使得在纯Javascript文件中定义组件非常痛苦(Internet Explorer不支持模板文字,要在干净的多行代码中用Javascript定义模板,您需要模板文字,我们需要IE支持)。我的团队已经同意在不久的将来转向Laravel和Vue,但在我们能够正确使用Vue之前,我们正在进行服务器迁移和代码更新 所以我想我会尽量模仿.vue的布局。首先,我在PHP或HTML文件中创建组件,在X模板中定义模板以及Vue组件实例化和样式。在我的PHP控制器/class/etc中,我需要该文件,它在DOM中呈现。这个解决方案可行,但我有几个问题Javascript 在PHP中镜像Vue组件而不使用Web包/捆绑包,javascript,php,vue.js,Javascript,Php,Vue.js,我正试图在我的公司使用Vue。目前我们没有使用任何Javascript构建工具,比如Webpack。这意味着没有巴别塔(巴别塔也不是一个选项)。NoBabel意味着没有模板文字(```),这使得在纯Javascript文件中定义组件非常痛苦(Internet Explorer不支持模板文字,要在干净的多行代码中用Javascript定义模板,您需要模板文字,我们需要IE支持)。我的团队已经同意在不久的将来转向Laravel和Vue,但在我们能够正确使用Vue之前,我们正在进行服务器迁移和代码更新
- 有什么不可预见的问题吗
- 有没有办法将这些.php/HTML文件的内容作为源文件而不是在DOM中呈现
-
- 这里有很多非常好的信息,但是建议将重点放在使用带有模板文本的.JS文件上,这对我们来说是不可能的
-
- http vue加载程序建议似乎很有用,但我将无法使用vue之外的任何外部库
render
函数,该函数接受要解析的任意多个*.vue文件的文件路径数组。它将处理它们并将它们转换为批处理的
和
标记。生成的脚本代码应符合IE 9+标准。如果要将代码导入外部源文件以通过HTML加载,还可以使用getScripts
和getStyles
函数直接检索代码
这种方法的主要区别在于处理函数模板和作用域样式,这两种样式在本解决方案中都受支持。还有一点额外的开销,这在我的情况下是可以接受的,但是可以通过使用上述两个额外的方法和缓存结果来减轻
一个基本用例可以是:
我也遇到了这个问题,并得出结论:Vue并没有为我们提供一种方便的方式来打包html中的多个组件。如果是这样的话,我们的php问题就不存在了,我们可以连接一些vue文件继续我们的业务
如果你能写这样的东西呢:
<template component="my-component">
<div>
<!-- template html here -->
</div>
<style scoped>
<!-- style here -->
</style>
<script>
// vue component definition here.
export default {
data(){
return {
variable: 'my value'
}
}
}
</script>
</template>
//这里是vue组件定义。
导出默认值{
数据(){
返回{
变量:“我的值”
}
}
}
现在,整个组件都包含在模板元素中。
这些模板元素可以在客户端上提取和重建
为了省去重新发明这个轮子的麻烦,你可以使用。它是Vue/VueRouter之上的一个层,从可用的html中提取这些组件并注册它们。1。有些功能需要Webpack.vue格式加载器,所以会想到范围样式。2.这需要Vue SSR,即计算js代码并将其呈现为HTML输出的Node.js web服务器,您可以使用外部预呈现服务。如果您使用的是Vue3,请查看它对外部库的更好支持
// MyPhpClass.php
public function includeComponents() {
include('path/to/MyComponent.php');
}
<template component="my-component">
<div>
<!-- template html here -->
</div>
<style scoped>
<!-- style here -->
</style>
<script>
// vue component definition here.
export default {
data(){
return {
variable: 'my value'
}
}
}
</script>
</template>