平地起高樓: 環境搭建

技術選型

本小冊是采用純前端的技術棧模擬實現小程序架構的系列文章,所以主要以前端技術棧為主,但是為了模擬一個App應用的效果,以及小程序包下載管理流程的實現,我們還是需要搭建一個基礎的App應用。這里我們將選擇 Tauri2.0 來作為基礎App的搭建,主要考慮:

  • Tauri 本身是一個跨端開發框架,頁面部分開發直接采用前端技術即可
  • 輕量,相比于 Electron 框架,在創建和啟動編譯上都有更大的優勢
  • 生態比較完善,如本小冊會用到的文件操作相關的能力官方也有相應的 fs-plugin 進行支持

除了基礎的App環境搭建啟動外,前端實現方面我們將采用:

  • 使用 pnpm 進行項目依賴管理
  • Vue3 搭建App應用界面
  • 使用 Web Worker 運行小程序邏輯線程
  • 使用 Iframe 運行小程序UI線程頁面渲染

現在讓我們開始構建起小程序框架的基礎開發環境吧! 🎉🎉🎉🎉🎉

基于Tauri創建App應用

創建第一個 tauri 項目: 詳細的項目創建流程可以查看官方文檔Create a Project | tauri

pnpm create tauri-app

運行上述創建命令后按照提示填寫項目信息即可:

  • Choose which language to use for your frontend ? TypeScript / JavaScript (pnpm, yarn, npm, bun)
  • Choose your package manager ? pnpm
  • Choose your UI template ? Vue
  • Choose your UI flavor ? Typescript

項目創建完成后,進入項目目錄安裝依賴并啟動:

cd tauri-apppnpm installpnpm tauri dev

運行完上述命令后,將會拉起一個頁面窗口,此時表明你的項目已經成功創建并啟動啦 👏👏👏👏

在這里插入圖片描述

構建基礎App頁面

使用 Tauri 創建完成App項目后,我們開始做一些簡單的改造,讓頁面呈現一個手機樣式并渲染一個小程序列表,方便后續測試小程序的打開

打開我們的App項目,項目結構大致如下:

├── index.html 前端頁面HTML
├── package.json
├── public/
│   ├── tauri.svg
│   └── vite.svg
├── src-tauri/
│   ├── Cargo.lock
│   ├── Cargo.toml
│   ├── build.rs
│   ├── capabilities/ webview窗口功能權限配置
│   │   └── default.json
│   ├── gen/
│   │   └── schemas/
│   ├── icons/ App 相關的圖標
│   ├── src/ rust部分開發目錄
│   │   ├── lib.rs
│   │   └── main.rs
│   └── tauri.conf.json  App 相關的一些基礎配置
├── src/ 前端 Vue 項目的開發目錄
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts

現在我們調整App窗口尺寸為一個手機尺寸: 414 * 828

// src-tauri/tauri.conf.json"app": {"windows": [{"title": "mini_wx_app","width": 414,"height": 828}],},

保存后應用會重新刷新啟動,現在我們的應用窗口就已經變成我們設定的手機尺寸啦!

構建一個基礎的前端小程序列表頁面

現在到了我們最熟悉的前端項目開發部分,我們將在 src 目錄下完成前端頁面的開發和小程序邏輯的開發工作;

引入前端樣式庫

項目中的基礎樣式我們將使用 tailwind css 來完成,現在我們給項目中接入一下 tailwind

安裝依賴

pnpm add tailwindcss @tailwindcss/vite

在Vite中配置

// vite.config.ts
import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'export default defineConfig({plugins: [ tailwindcss() ]
})

導入 Tailwind CSS

我們在 src/assets 下創建一個 styles 目錄,并創建一個base.css 的文件

/* src/assets/styles/base.css */@import "tailwindcss";

創建好這個文件后并在Vue項目的入口文件導入它:

// src/main.ts
+ import './assets/styles/base.css';

現在我們刪除App.vue 中的多余邏輯,加上一點兒 tailwind css 樣式類,確認 tailwind css 是否正確引入

<script setup lang="ts">
</script><template><main class="container w-screen h-screen bg-gray-100 p-6 box-border overflow-x-hidden"></main>
</template>
構建小程序列表

我們先來模擬幾個小程序的數據列表

// src/constants/apps.tsexport const apps = [{appId: 'douyin',name: '抖音',logo: 'https://play-lh.googleusercontent.com/xey8dXOB53LtCR97JhDH7T-6np_sUBBE9iF7WP4Sp6T55oO28e6hic1LFTklCELw9Iw'},{appId: 'meituan',name: '美團',logo: 'https://companieslogo.com/img/orig/3690.HK-a1f4c236.png?t=1720244490'},{appId: 'jindong',name: '京東',logo: 'https://companieslogo.com/img/orig/JD-642e307f.png?t=1720244492'}
]

然后使用 vue 將列表渲染到頁面上即可:

<script setup lang="ts">
import { apps } from '@/constants/apps';
</script><template><main class="container w-screen h-screen bg-gray-100 p-6 box-border overflow-x-hidden flex flex-col gap-4"><div class="app-item flex items-center gap-4 px-4 py-2 rounded-md bg-white shadow-md hover:bg-gray-200 overflow-hidden" v-for="app in apps" :key="app.appId"><img class="app-logo w-10 h-10 rounded-md" :src="app.logo" /><span class="text-base">{{ app.name }}</span></div></main>
</template>

最終我們的頁面效果如下:

在這里插入圖片描述

至此,我們幾個基礎的開發環境就搭建好了;后面開始我們就將在這個環境下完成小程序架構的構建,一起加油吧~~ 👏👏👏👏

本節代碼已同步至github倉庫: mini-wx-app

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86818.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86818.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86818.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

langgraph學習2 - MCP編程

3中通信方式&#xff1a; 目前sse用的很少 3.開發mcp框架 主流框架2個&#xff1a; MCP skd 官方 Fast Mcp V2 &#xff0c;&#xff08;V1捐給MCP 官方&#xff09; 大模型如何識別用哪個tools&#xff0c; 以及如何使用tools&#xff1a;

CSS 與 JavaScript 加載優化

&#x1f4c4; CSS 與 JavaScript 加載優化指南&#xff1a;位置、阻塞與性能 讓你的網頁飛起來&#xff01;&#x1f680; 本文詳細解析 CSS 和 JavaScript 標簽的放置位置如何影響頁面性能&#xff0c;涵蓋阻塞原理、瀏覽器機制和最佳實踐。掌握這些知識可顯著提升用戶體驗…

WSL安裝發行版上安裝podman

WSL安裝發行版上安裝podman 1.WSL拉取發行版1.1 拉取2.2.修改系統拉取的鏡像&#xff0c;可以加速軟件包的更新 2.podman安裝2.1.安裝podman 容器工具2.2.配置podman的鏡像倉庫2.3.拉取n8n鏡像并創建容器 本文在windows11上&#xff0c;使用WSL拉取并創建ubuntu24.04虛擬機&…

Excel 常用快捷鍵與對應 VBA 方法/屬性清單

功能描述快捷鍵VBA 對應方法/屬性 (核心邏輯)說明導航 (類似 End 方向鍵)這些是 End 鍵行為的直接對應向下到連續區域末尾Ctrl ↓ActiveCell.End(xlDown)從當前單元格向下&#xff0c;遇到第一個空單元格停止。向上到連續區域開頭Ctrl ↑ActiveCell.End(xlUp)從當前單元格向上…

計算機組成原理與體系結構-實驗四 微程序控制器 (Proteus 8.15)

一、實驗目的 1、理解“微程序”設計思想&#xff0c;了解“指令-微指令-微命令”的微程序結構。 2、掌握微程序控制器的結構和設計方法。 二、實驗內容 設計一個“最簡版本”的 CPU 模型機&#xff1a;利用時序發生器來產生 CPU 的預定時序&#xff0c;通過微程序控制器的自…

安卓端某音樂類 APP 逆向分享(二)協議分析

以歌曲搜索協議為例&#xff0c;查看charles中歌曲搜索協議詳情 拷貝出搜索協議的Curl形式 curl -H Host: interface3.music.xxx.com -H Cookie: EVNSM1.0.0; NMCIDoufhty.1667355455436.01.4; versioncode8008050; buildver221010200836; resolution2392x1440; deviceIdYDwXa…

七天學會SpringCloud分布式微服務——03——Nacos遠程調用

1、微服務項目配置類放在地方 配置類型應放位置說明通用配置類&#xff08;如&#xff1a;跨服務通用的攔截器、全局異常處理、統一響應體封裝等&#xff09;可放在一個**公共模塊&#xff08;common/config&#xff09;**中&#xff0c;被各服務引入實現代碼復用&#xff0c;…

基于Java+Spring Boot的校園閑置物品交易系統

源碼編號&#xff1a;S561 源碼名稱&#xff1a;基于Spring Boot的校園閑置物品交易系統 用戶類型&#xff1a;多角色&#xff0c;用戶、商家、管理員 數據庫表數量&#xff1a;12 張表 主要技術&#xff1a;Java、Vue、ElementUl 、SpringBoot、Maven 運行環境&#xff1…

SpringBoot 的 jar 包為什么可以直接運行?

一、普通jar包和SpringBoot jar包有什么區別&#xff1f;什么是jar包&#xff1f;&#xff1f; &#xff08;1&#xff09;什么是Jar包&#xff1f; 定義&#xff1a; JAR 包&#xff08;Java Archive&#xff09; 是 Java 平臺標準的歸檔文件格式&#xff0c;用于將多個 Jav…

算法-基礎算法-遞歸算法(Python)

文章目錄 前言遞歸和數學歸納法遞歸三步走遞歸的注意點避免棧溢出避免重復運算 題目斐波那契數反轉鏈表 前言 遞歸&#xff08;Recursion&#xff09;&#xff1a;指的是一種通過重復將原問題分解為同類的子問題而解決的方法。在絕大數編程語言中&#xff0c;可以通過在函數中再…

TVFEMD-CPO-TCN-BiLSTM多輸入單輸出模型

47-TVFEMD-CPO-TCN-BiLSTM多輸入單輸出模型 適合單變量&#xff0c;多變量時間序列預測模型&#xff08;可改進&#xff0c;加入各種優化算法&#xff09; 時變濾波的經驗模態分解TVFEMD時域卷積TCN雙向長短期記憶網絡BiLSTM時間序列預測模型 另外以及有 TCN-BILSTM …

深入淺出Node.js中間件機制

我們用一個實際的例子來看看中間件是如何運作的。假設我們有一個非常簡單的Express應用&#xff0c;它只有兩個中間件函數&#xff1a; const express require(express); const app express();app.use((req, res, next) > {console.log(第一個中間件);next(); });app.use…

Vue-15-前端框架Vue之應用基礎編程式路由導航

文章目錄 1 RouterLink的replace屬性1.1 App.vue1.2 應用效果2 編程式路由導航2.1 場景一Home.vue2.2 場景二News.vue3 路由重定向3.1 index.ts3.2 Detail.vue3.3 About.vue1 RouterLink的replace屬性 路由每次跳轉都有記錄,默認是push,可以改為replace。 RouterLink支持兩…

android14 設置下連續點擊5次Settings標題跳轉到撥號界面

部分項目隱藏了撥號器&#xff0c;但開發者需要間距跳轉到撥號界面 設置一級界面&#xff1a; packages/apps/Settings/src/com/android/settings/homepage/SettingsHomepageActivity.java 通過dispatchTouchEvent方法先獲取Settings標題的區域X,Y數據。 import java.util.Set…

MP分頁和連表常用寫法

1. 分頁查詢 方案一&#xff1a;MyBatis XML MyBatis 內置的使用方式&#xff0c;步驟如下&#xff1a; ① 創建 AdminUserMapper.xml 文件&#xff0c;編寫兩個 SQL 查詢語句&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE m…

使用 Spring AI Alibaba構建 AI Code Review 應用

很早的時候就想著用AI來做Code Review&#xff0c;最近也看到了一些不錯的實現&#xff0c;但是沒有一個使用Java來構建的&#xff0c;看的比較費勁&#xff0c;雖然說語言只是一種工具&#xff0c;但是還是想用Java重新寫一遍&#xff0c;正好最近Spring AI Alibaba出了正式版…

力扣1590. 使數組和能被 P 整除

這一題的難點在于模運算&#xff0c;對模運算足夠了解&#xff0c;對式子進行變換就很容易得到結果&#xff0c;本質上還是一道前綴和哈希表的題 這里重點講一下模運算。 常見的模運算的用法 (a-b)%k0等價于 a%kb%k 而在這一題中由于多了一個len&#xff0c;&#xff08;數組的…

FPGA內部資源介紹

FPGA內部資源介紹 目錄 邏輯資源塊LUT&#xff08;查找表&#xff09;加法器寄存器MUX&#xff08;復用器&#xff09;時鐘網絡資源 全局時鐘網絡資源區域時鐘網絡資源IO時鐘網絡資源 時鐘處理單元BLOCK RAMDSP布線資源接口資源 用戶IO資源專用高速接口資源 總結 1. 邏輯資源…

CSS 列表

CSS 列表 引言 CSS 列表是網頁設計中常用的一種布局方式&#xff0c;它能夠幫助我們以更靈活、更美觀的方式展示數據。本文將詳細介紹 CSS 列表的創建、樣式設置以及常用技巧&#xff0c;幫助您更好地掌握這一重要技能。 CSS 列表概述 CSS 列表主要包括兩種類型&#xff1a…

spring中的@Cacheable緩存

1. 使用方法 在方法上面加上注解Cacheable&#xff0c; OverrideCacheable(cacheNames "userCache", key "#id")public User getUserById(Long id) {System.out.println("查詢數據庫了");return getById(id);}如果你的項目中引入了&#xff…