vue的增量式学习-篇章1, 又名:写毕设到企业级前端(第4天)
当使用Vue 2的Options API和Vue 3的Composition API来编写组件时,以下是相应的示例代码,以便更好地理解它们之间的差异。
{{ message }}
上面的示例是一个Vue 2组件,使用了Options API来定义组件的数据(data
)、模板(template
)以及生命周期钩子(created
、mounted
、updated
等)。生命周期钩子在组件的不同阶段执行相应的代码。
{{ message }}
这是一个Vue 3组件,使用了Composition API来定义组件的逻辑。注意,没有了明确的生命周期钩子,而是使用onMounted
、onUpdated
和onBeforeUnmount
等函数来处理组件的不同生命周期阶段。这使得组件逻辑更加模块化和组织化。
这两个示例展示了Vue 2的Options API和Vue 3的Composition API之间的主要差异。Vue 3的Composition API提供了更多的灵活性和可维护性,尤其对于大型应用程序和复杂组件来说,它可以更好地组织代码。
Vue.js 和 TypeScript 是两个不同但可以很好地结合使用的前端技术。下面是它们之间的关系和如何一起使用它们:
vue.d.ts
),这使得在Vue组件中使用TypeScript变得更加容易。.ts
文件和编写TypeScript代码。总之,Vue.js和TypeScript可以很好地协同工作,提供了更好的开发体验和代码质量。你可以选择在Vue 2或Vue 3中使用TypeScript,具体取决于项目的需求和你的偏好。
Todo List
-
{{ todo }}
现在,示例中明确使用了TypeScript来定义类型。newTodo
和todos
都使用ref
函数创建,它们的类型是通过TypeScript推断得出的。此外,addTodo
和removeTodo
方法都明确指定了参数的类型。
关于defineComponent
和ref
的作用:
defineComponent
:
defineComponent
是Vue 3的Composition API中的一个函数,用于定义组件。defineComponent
帮助我们将组件的选项和逻辑组织在一起,使组件定义更加清晰和模块化。ref
:
ref
是Vue 3的Composition API提供的函数,用于创建响应式数据。ref
用于创建newTodo
和todos
,使它们成为响应式数据,以便在模板中使用并自动响应数据的变化。这些工具帮助我们在Vue 3中更好地组织代码,并利用TypeScript来提高类型安全性和开发体验。
对于上面提到的四个不同的场景,以下是简单的"Hello World"示例代码以及如何进行简单的测试:
1. 配合 Electron 或 Tauri 构建桌面应用:
DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Electron / Tauri Vue Apptitle>
head>
<body>
<div id="app">
{{ message }}
div>
<script src="app.js">script>
body>
html>
// app.js
const { app, BrowserWindow } = require('electron'); // 或者使用 Tauri 相应的导入
const createWindow = () => {
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
});
mainWindow.loadFile('index.html');
};
app.whenReady().then(createWindow);
测试步骤:
2. 配合 Ionic Vue 构建移动端应用:
# 安装 Ionic CLI
npm install -g @ionic/cli
# 创建 Ionic Vue 应用
ionic start myApp vue
cd myApp
打开src/views/Home.vue
文件,替换其中的内容:
Hello Ionic Vue
{{ message }}
测试步骤:
src/views/Home.vue
中的内容。ionic serve
。3. 使用 Quasar 用同一套代码同时开发桌面端和移动端应用:
# 安装 Quasar CLI
npm install -g @quasar/cli
# 创建 Quasar 项目
quasar create my-app
# 进入项目目录
cd my-app
在src/pages/Index.vue
中替换内容:
{{ message }}
测试步骤:
src/pages/Index.vue
中的内容。quasar dev
。4. 使用 Vue 的自定义渲染 API 来构建不同目标的渲染器,比如 WebGL 甚至是终端命令行:
当涉及到WebGL和终端命令行时,涉及到的概念如下:
WebGL 应用示例:
webgl-scene
),它用于将Three.js渲染的WebGL场景嵌入到Vue应用中。WebGL 应用示例:
这个示例将使用Three.js库来创建一个简单的WebGL场景,并使用Vue的自定义渲染API将它渲染到Web页面上。
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>WebGL with Vuetitle>
<style>
body { margin: 0; }
style>
head>
<body>
<div id="app">div>
<script src="" >script>
<script src="" >script>
<script>
const { createApp } = Vue;
const app = createApp({});
app.mount('#app');
// 创建Vue组件
app.component('webgl-scene', {
template: `
`,
mounted() {
// 创建Three.js场景
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
this.$refs.container.appendChild(renderer.domElement);
// 创建一个简单的立方体
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
camera.position.z = 5;
// 渲染场景
const animate = () => {
requestAnimationFrame(animate);
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
renderer.render(scene, camera);
};
animate();
}
});
// 在Vue实例中使用WebGL组件
app.mount('#app', `
`);
script>
body>
html>
2. 终端命令行应用示例:
App
),它用于定义应用程序的界面和逻辑。然后,我们使用Vue的自定义渲染API将这个组件渲染到终端命令行界面中。这个示例将演示如何使用Vue的自定义渲染API创建一个简单的终端命令行应用,这个应用将输出"Hello, Terminal!"。
const { createRenderer } = require('vue');
const renderer = createRenderer({
createElement(type) {
return { type };
},
patchProp(el, key, prevValue, nextValue) {
el[key] = nextValue;
},
insert(child, parent, anchor) {
parent[child.type] = child;
},
});
const App = {
data() {
return {
message: 'Hello, Terminal!'
};
},
render() {
return this.message;
},
};
const vm = renderer.createApp(App).mount();
console.log(vm); // 输出 "Hello, Terminal!"
比如桌面应用(移动端同理):
使用Vue进行桌面开发而不使用原生的C++有以下一些潜在优点和考虑因素:
然而,要考虑的因素也包括:
总的来说,使用Vue进行桌面开发是一种灵活的选择,特别适合那些已经熟悉前端开发的团队,或者需要快速开发跨平台桌面应用的情况。然而,具体选择应根据项目需求、性能要求和团队技能来决定。
Uni-app和Vue官方推荐的组件之间有一些区别,主要体现在以下几个方面:
选择使用Uni-app还是Vue官方推荐的组件取决于你的具体需求和项目情况:
概念式的讲解学习 vue的各个模块。
接下来就是介绍各部分组件概念