注:我们可以编写vue.js大型应用程序,而不使用任何编译器的代码,如目前我看到的所有示例使用webpack现在使vue.js代码兼容浏览器。
我想做一个没有webpack
和没有使用.vue
扩展的vue.js
应用程序。这是可能的吗?如果可能的话,你能提供一个链接或给予如何在这种情况下使用路由的例子吗?
当我们在.vue
扩展中制作组件时,可以在.js
扩展中制作组件并使用应用程序,就像我们在angular 1中所做的那样,我们可以在没有任何编译器转换代码的情况下制作整个应用程序。
可以在html,css,js文件中完成,只有没有webpack之类的东西。
我所做的一切。index.js
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>vueapp01</title>
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
main.js此文件在webpack加载时添加
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})
应用程序版本
<template>
<div id="app">
<img src="./assets/logo.png">
<a href="#/hello">Hello route</a>
<a href="#/">Helloworld route</a>
{{route}}
<router-view/>
<!-- <hello></hello> -->
</div>
</template>
<script>
export default {
name: 'App',
data () {
return {
route : "This is main page"
}
}
}
</script>
路由器
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Hello from '../components/Hello'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'HelloWorld',
component: HelloWorld
},
{
path: '/hello',
name: 'Hello',
component: Hello
}
]
})
我已经做了类似的事情。我们可以做到这一点,只有html,css,js文件,而不是webpack来编译代码。就像我们在angular 1 .
谢谢
6条答案
按热度按时间kq0g1dla1#
如本jsFiddle中所述:http://jsfiddle.net/posva/wtpuevc6/,您没有义务使用webpack或.vue文件。
创建index.html文件:
主页.js
Foo.js
路由器.js
索引.js
"欣赏这个框架..."
.vue
文件真的很棒,如果不使用它们不是一个要求,你一定要尝试它们 *pdsfdshx2#
我已经开始学习vue.js也和我不熟悉的webpack和东西,我也想仍然分开和使用.vue文件,因为它使管理和代码更干净。
我找到了这个图书馆:https://github.com/FranckFreiburger/http-vue-loader
和使用它的示例项目:https://github.com/kafkaca/vue-without-webpack
我正在使用它,它似乎工作正常。
eh57zj3b3#
你完全可以,但有很多缺点。例如:您不能轻易地使用任何预处理器,如Sass或Less;或者用Babel翻译源代码。
如果您不需要支持旧版浏览器,您可以使用ES6模块。几乎所有浏览器都支持它。请参阅:ES6-模块。
但Firefox不支持动态导入(),只有Firefox 66(Nightly)支持,需要启用。
如果这还不够,你的Web应用程序将不会被索引,这对SEO是不利的。
例如,Googlebot可以抓取和索引Javascript代码,但still uses older Chrome 41用于渲染,而且它的版本不支持ES6模块。
如果这对你来说不是缺点,那么你可以这样做:
1.删除任何第三方库导入,如Vue、VueRouter等。并使用脚本标记将其包含在index.html文件中。所有全局变量在所有es6模块中都可访问。例如,从main.js和所有.vue文件中删除以下行:
然后在index.html中添加以下行:
1.重写所有.vue文件并将文件扩展名更改为. js。例如,重写如下内容:
变成这样
1.我在this link里放了一个例子
P.S.没有语法突出显示的文本编辑可能会令人沮丧。如果您使用Visual Studio代码,您可以安装Template Literal Editor扩展。它允许编辑带有语法突出显示的文字字符串。对于样式,请选择CSS语法,对于模板,请选择HTML语法。HTML中的未知标记会以不同的方式突出显示。要解决此问题,请更改颜色主题。例如,安装Brackets Dark Pro颜色主题或您喜欢的任何主题。
问候!
mfuanj7w4#
当然可以。我们用Vue做了一个项目,在编译
.vue
文件时遇到了一些问题。所以我们改用了三个独立文件的结构。但是要知道,无论如何你都需要
webpack
。Vue的想法是将巨大的项目拆分成组件,所以在.js
文件中使用模板是很正常的。和
使用这些模块,您可以编写如下代码:
组件.js
组件.css
组件.html
"但是...“
你需要知道HTML文件应该以同样的方式写,因为我你会有它在
template
属性。另外,看看这个回购,也许你会发现一些有用的东西在这里
Vue-html-loader。它是Vue核心团队从
html-loader
派生的。xggvc2p65#
在vuews 3中,您可以采用ES6模块化方式(无需Webpack或其他工具):
index.html
main.js
components/App.js
components/Home.js
components/About.js
utils/html.js
备注:
importmap
只能在chrome(firefox in progress)上运行。为了使代码也能兼容其他浏览器,只需直接从url导入(每个.js文件)依赖项。在这种情况下,vue-router.esm-browser.js
仍然导入'vue',所以您应该提供它的更新版本,用import { .... } from 'https://unpkg.com/vue@3.0.11/dist/vue.esm-browser.js'
替换import { .... } from 'vue'
<link rel="modulepreload" href="[module-name]">
条目添加到index.html
,以便在需要某些或所有模块之前异步地开始预加载它们。A Related article
dtcbnfnu6#
Vue可以非常简单地包含在单个html页面中:
Vue 3最小示例:
Vue 2最小示例,带Vuetify
第2版指南:
第3版指南:https://v2.vuejs.org/v2/guide/installation.html#CDN