vue,,
“
1、优点:简单直接,适合小型项目或快速原型开发,能够快速集成外部资源,无需复杂的构建工具配置。
2、缺点:不适合大型项目,难以管理依赖和版本控制。
3、实现方法:
在public/index.html
文件的<head>
部分或<body>
底部添加<script>
标签,引入CDN链接。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue App</title> <!-引入Vue.js CDN --> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script> </head> <body> <div id="app">{{ message }}</div> <script> new Vue({ el: '#app', data: { message: 'Hello Vue!' } }); </script> </body> </html>
1、优点:适合特定组件引入外部JS文件,不影响其他组件。
2、缺点:增加了组件的复杂性,不便于统一管理。
3、实现方法:
在Vue组件的<template>
部分使用<script>
标签,并在组件挂载时动态加载外部脚本。
<template> <div> <h1>My Vue Component</h1> </div> </template> <script> export default { name: "MyComponent", mounted() { // 动态加载外部脚本 const script = document.createElement('script'); script.src = "https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"; script.async = true; document.head.appendChild(script); script.onload = () => { console.log('Script loaded!'); }; } }; </script>
1、优点:简化了配置过程,适合有现成插件的库。
2、缺点:需要安装对应的插件,可能增加项目体积。
3、实现方法:
以vue-axios
为例,首先安装插件:
npm install vue-axios axios
然后在main.js
中引入并使用:
import Vue from 'vue'; import App from './App.vue'; import axios from 'axios'; import VueAxios from 'vue-axios'; Vue.config.productionTip = false; Vue.use(VueAxios, axios); new Vue({ render: h => h(App), }).$mount('#app');
1、优点:适合中大型项目,易于管理依赖和版本控制。
2、缺点:需要一定的配置时间和理解项目结构的知识。
3、实现方法:
在vue.config.js
中配置externals
选项来引入CDN链接:
module.exports = { configureWebpack: { externals: { vue: 'Vue' } }, chainWebpack: config => { config.plugin('html').tap(args => { args[0].cdn = { js: [ 'https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js' ] }; return args; }); } };
在public/index.html
中引入配置的CDN链接:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue CDN Example</title> <script src="<%= htmlWebpackPlugin.options.cdn.js %>"></script> </head> <body> <div id="app"></div> </body> </html>
1、优点:提供更灵活和高效的方式来管理依赖,支持模块化开发。
2、缺点:需要较高的配置技能和理解Webpack的工作原理。
3、实现方法:
安装html-webpack-plugin
插件:
npm install html-webpack-plugin --save-dev
在Webpack配置文件中进行如下配置:
const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { externals: { vue: 'Vue' }, plugins: [ new HtmlWebpackPlugin({ template: 'public/index.html', cdn: { js: [ 'https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js' ] } }) ] };
在public/index.html
中引入:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue CDN Example</title> <script src="<%= htmlWebpackPlugin.options.cdn.js %>"></script> </head> <body> <div id="app"></div> </body> </html>
六、使用Vue Loader和Webpack配置引入CDN(高级)
1、优点:支持单文件组件、优化构建性能、灵活配置。
2、缺点:需要深入理解Vue Loader和Webpack的工作原理,配置复杂度较高。
3、实现方法:
确保安装了vue-loader
和vue-template-compiler
:
npm install vue-loader vue-template-compiler --save-dev
在Webpack配置文件中进行如下配置:
const VueLoaderPlugin = require('vue-loader/lib/plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { module: { rules: [ { test: /.vue$/, loader: 'vue-loader' } ] }, plugins: [ new VueLoaderPlugin(), new HtmlWebpackPlugin({ template: 'public/index.html', cdn: { js: [ 'https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js' ] } }) ] };
在public/index.html
中引入:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue CDN Example</title> <script src="<%= htmlWebpackPlugin.options.cdn.js %>"></script> </head> <body> <div id="app"></div> </body> </html>
单位表格:
方法 | 优点 | 缺点 | 适用场景 | 示例代码 |
HTML文件直接引入 | 简单直接,快速集成 | 不适合大型项目,难以管理依赖 | 小型项目或快速原型开发 |
|
Vue组件中使用外部脚本标签 | 适合特定组件,不影响其他组件 | 增加了组件的复杂性 | 需要在特定组件中引入外部JS文件 | mounted() { const script = document.createElement('script'); script.src = "https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"; document.head.appendChild(script); } |
使用Vue插件 | 简化配置过程 | 需要安装对应的插件,可能增加项目体积 | 有现成插件的库 | npm install vue-axios axios ,Vue.use(VueAxios, axios); |
Vue CLI配置文件中引入CDN | 适合中大型项目,易于管理依赖 | 需要一定的配置时间和理解项目结构的知识 | 中大型项目,统一管理依赖 | module.exports = { ... chainWebpack: config => { config.plugin('html').tap(args => { args[0].cdn = { js: ['https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js'] }; return args; }); }}; |
结合Webpack配置引入CDN | 更灵活和高效,支持模块化开发 | 需要较高的配置技能和理解Webpack的工作原理 | 需要高度定制化的项目 | module.exports = { externals: { vue: 'Vue' }, plugins: [new HtmlWebpackPlugin({ template: 'public/index.html', cdn: { js: ['https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js'] } })] }; |
使用Vue Loader和Webpack配置(高级) | 支持单文件组件、优化构建性能 | 需要深入理解Vue Loader和Webpack的工作原理,配置复杂度较高 | 需要高度定制化的项目,特别是单文件组件 | module.exports = { module: { rules: [{ test: /.vue$/, loader: 'vue-loader' }] }, plugins: [new VueLoaderPlugin(), new HtmlWebpackPlugin({ template: 'public/index.html', cdn: { js: ['https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js'] } })] }; |