在传统的HTML、CSS与JavaScript项目中加入vue

目录

前言:

vue的优点

一、在现有项目中引入Vue.js方式

1.通过CDN直接引入Vue

2.创建Vue实例

3.渐进式集成策略

4.组件化迁移

5.构建工具集成

6.路由集成

二、实例


前言:

Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架,它允许开发者逐步采用其功能。它的核心是一个响应式的视图层,能够高效地更新 DOM 并保持数据同步。

vue的优点

在现有的项目中引入Vue.js是很有必要的因为vue是轻量级框架,它只关注视图层,是一个构建数据的视图集合。

vue是双向数据绑定的,它保留了angular的特点,在数据操作方面更为简单。

vue也是更加组件化的,其数据保留react的优点,实现了html的封装和重用,在构建单页面应用方面有着独特的优势。

视图,数据,结构分离,这使得数据变得更为简单,不需要进行逻辑代码修改,只需要操作数据就可以完成相关操作。

vue的运行速度更快,相比较react而言,操作虚拟dom,在性能上vue存在很大的优势。

在传统的HTML、CSS和JavaScript项目中逐步引入Vue.js,可以通过以下方式实现无缝集成。vue的设计允许渐进式采用,无需重写现有代码。

一、在现有项目中引入Vue.js方式

1.通过CDN直接引入Vue

对于小型项目或快速原型开发,最简单的方式是通过CDN引入Vue。在HTML文件的<head><body>底部添加Vue的CDN链接

html 复制代码
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<!-- 或使用生产环境版本 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14"></script>
 

2.创建Vue实例

在现有JavaScript代码中初始化Vue实例,指定挂载的DOM元素:

javascript 复制代码
new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
});
 

对应的HTML中需要有一个容器元素:

html 复制代码
<div id="app">
  {{ message }}
</div>
 

3.渐进式集成策略

从局部功能开始使用Vue,逐步扩大使用范围。可以在现有页面中为特定区域创建Vue实例,而非整个页面:

html 复制代码
<div id="legacy-content">
  <!-- 传统HTML/CSS/JS内容 -->
</div>

<div id="vue-section">
  {{ vueData }}
</div>
javascript 复制代码
new Vue({
  el: '#vue-section',
  data: {
    vueData: 'This is Vue-controlled content'
  }
});
 

4.组件化迁移

将重复的UI部分转换为Vue组件,逐步替换传统代码:

javascript 复制代码
Vue.component('custom-button', {
  template: '<button @click="handleClick">{{ text }}</button>',
  props: ['text'],
  methods: {
    handleClick() {
      alert('Button clicked!');
    }
  }
});
 

在HTML中使用该组件:

html 复制代码
<custom-button text="Click me"></custom-button>
 

5.构建工具集成

对于复杂项目,考虑使用Vue CLI或webpack构建工具:

bash 复制代码
npm install -g @vue/cli
vue create my-project
 

6.路由集成

添加vue-router处理导航,同时保留传统页面的部分路由逻辑:

javascript 复制代码
const router = new VueRouter({
  routes: [
    { path: '/vue-page', component: VuePageComponent },
    { path: '/legacy-page', beforeEnter() { window.location.href = '/legacy.html' }}
  ]
});
 

二、实例

以下是我在开发报表系统时进行的vue添加,我才用的是第一种方式的vue添加,即通过CDN直接引入vue。

首先,创建vue的主应用app.js

javascript 复制代码
// app.js
const { createApp, ref, onMounted, computed } = Vue;

const app = createApp({
  setup() {
    // 用户状态
    const isLoggedIn = ref(false);
    const currentUser = ref(null);

中间代码省略

javascript 复制代码
return {
      isLoggedIn,
      currentUser,
      activeSection,
      pageTitle,
      showModal,
      login,
      logout,
      switchSection,
      showHelp,
      hideHelp
    };
  }
});

app.mount('#app');

其次,在登录页面login.html上创建vue

javascript 复制代码
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
    <script>
        const { createApp, ref } = Vue;
        
        const app = createApp({
            setup() {
                const loginForm = ref({
                    username: '',
                    password: ''
                });
                
                const loginError = ref(false);
                
                const handleLogin = () => {
                    // 检查用户名和密码
                    if (loginForm.value.username === 'admin' && 
                        loginForm.value.password === '123456') {
                        // 登录成功
                        localStorage.setItem('isLoggedIn', 'true');
                        window.location.href = 'index.html';
                    } else {
                        // 登录失败
                        loginError.value = true;
                        setTimeout(() => {
                            loginError.value = false;
                        }, 3000);
                    }
                };
                
                return {
                    loginForm,
                    loginError,
                    handleLogin
                };
            }
        });
        
        app.mount('#app');
    </script>

然后,在主页面index.html上创建vue

javascript 复制代码
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
    <script>
        const { createApp, ref, onMounted, computed } = Vue;

        const app = createApp({
            setup() {
                // 用户状态
                const isLoggedIn = ref(false);
                const currentUser = ref(null);
  
                return {
                    isLoggedIn,
                    currentUser,
                    activeSection,
                    pageTitle,
                    showModal,
                    login,
                    logout,
                    switchSection,
                    showHelp,
                    hideHelp
                };
            }
        });

        app.mount('#app');
    </script>

最后,在styles.css上添加vue控制的显示/隐藏类

css 复制代码
/* 添加 Vue 控制的显示/隐藏类 */
.modal.hidden {
    display: none;
}

.modal.visible {
    display: block;
}

成果如同

具体内容还需详细展示,有任何疑问可以私信。

相关推荐
xcLeigh1 小时前
AI 绘制图表专栏:用豆包轻松实现 HTML 柱状图、折线图与饼图
前端·人工智能·html·折线图·柱状图·图表·豆包
码代码的霖1 小时前
HTML———标签元素
前端·html
BillKu1 小时前
html2pdf.js使用与配置详解
开发语言·javascript·ecmascript
无·糖1 小时前
大学生HTML期末大作业——HTML+CSS+JavaScript人物明星(周杰伦)
javascript·css·html·课程设计·大学生·大作业·web网页设计作业
鲸落✗1 小时前
深入解析单HTML实现的网页版《我的世界》(附代码下载链接)
前端·python·html
parade岁月1 小时前
理解 CSS backface-visibility:卡片翻转效果背后的属性
前端·css
San30.2 小时前
深入 JavaScript 原型与面向对象:从对象字面量到类语法糖
开发语言·javascript·ecmascript
锂享生活2 小时前
金句闪卡生成器
前端·javascript·react.js
炒毛豆2 小时前
vue3+ant design vue实现表单验证失败后,自动滚动到失败的位置(scrollToField)
前端·javascript·vue.js