uni-app框架(项目创建)

1.学习说明

dcloud官方除uni-app外,还有新生的uni-app x(即下一代uni-app),如果是初学者或者刚入门同学,建议还是使用uni-app进行开发。

无论是vue还是uni,作为前端开发的一个框架学习方法是一致的,因此在开发学习的过程中需要注意目录结构、开发规范、生命周期、页面结构等重点,然后依次进行深入学习。

本文档以vue3、组合式api、ts进行开发学习。

2.框架介绍
  • 官方文档:https://uniapp.dcloud.net.cn/
  • 框架优势

        uni-app是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。

3.项目创建
1.HBuilderX可视化创建(推荐)
  • 下载开发工具

        https://www.dcloud.io/hbuilderx.html

  • 在点击工具栏里的文件->新建->项目(快捷键Ctrl+N)
  • 选择uni-app
  • 选择模板(建议使用默认模板)
  • 选择vue版本(建议vue3)
2.vue-cli创建

全局安装 vue-cli

npm install -g @vue/cli

创建uni-app

vue create -p dcloudio/uni-preset-vue my-project
4.Typescript 配置

创建文件并进行配置修改,在根目录创建tsconfig.json 文件,点击查看官方手册。

// tsconfig.json{  "compilerOptions": {    "target": "esnext",    "module": "esnext",    "strict": true,    "jsx": "preserve",    "moduleResolution": "node",    "esModuleInterop": true,    "sourceMap": true,    "skipLibCheck": true,    "importHelpers": true,    "allowSyntheticDefaultImports": true,    "useDefineForClassFields": true,    "resolveJsonModule": true,    "lib": [      "esnext",      "dom"    ],    "types": [      "@dcloudio/types"    ]  },  "exclude": [    "node_modules",    "unpackage",    "src/**/*.nvue"  ]}
5.UI组件安装

此处使用npm安装,其他安装方式查看官方安装手册,注意:安装完成后重新编译运行!!!

1.uni-ui
(1) 安装 sass
npm i sass -D
(2)安装 sass-loader
npm i sass-loader@10.1.1 -D
(3)安装uni-ui
npm i @dcloudio/uni-ui
(4) 配置easycom
 打开项目根目录下的pages.json 并添加 easycom 节点, 如下示例图,代码紧随其后。

图片

// pages.json
{
  "easycom": {
    "autoscan": true,
    "custom": {
      // uni-ui 规则如下配置
      "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
    }
  },
  
  // 其他内容
  pages:[
    // ...
  ]
}
2.uview-plus
(1)安装 sass(若已安装,可跳过)
npm i sass -D
(2)安装 sass-loader(若已安装,可跳过)
npm i sass-loader@10.1.1 -D
(3)安装uview-plus,依次安装命令如下:
npm install uview-plus
npm install dayjs
npm install clipboar
(4)引入uview-plus主JS库

在项目src目录中的main.js中,引入并使用uview-plus的JS库,注意这两行要放在const app = createSSRApp(App)之后。

// #ifdef VUE3
import { createSSRApp } from 'vue'
import uviewPlus from 'uview-plus'
export function createApp() {
  const app = createSSRApp(App)
  app.use(uviewPlus)
  return {
    app
  }
}
// #endif

示例截图如:

图片

(5)引入uview-plus的全局SCSS主题文件

   在项目根目录的uni.scss中引入此文件

/* ui.scss */
@import 'uview-plus/theme.scss';

图片

(6)引入uview-plus基础样式

在App.vue中首行的位置引入,注意给style标签加入lang="scss"属性,截图及代码如下:

图片

<style lang="scss">
  /* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
  @import "uview-plus/index.scss";
</style>
(7)配置easycom组件模式

打开项目根目录下的pages.json 并添加 easycom 节点。因为上面安装uni-ui时已进行配置,因此此处仅需在custom种添加已下三行即可,代码及截图如下:

"^u--(.*)": "uview-plus/components/u-$1/u-$1.vue",
"^up-(.*)": "uview-plus/components/u-$1/u-$1.vue",
"^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue"

图片

6.页面重构
  • 删除旧文件

        删除pages目录下的原有index.vue文件

  • 创建新文件

        在pages目录下新建index.vue文件,截图及完整示例代码如下(直接复制运行即可):

图片

<template>
  <view class="content u-flex-column">
    <uni-section title="定义数据" type="line">
      <view class="data"><text class="title">{{title}}</text></view>
    </uni-section>
    <uni-section title="uni-ui组件示例" type="line">
      <view class="data">
        <up-text color="#fff" text="uni-ui组件示例"></up-text>
        <uni-badge size="small" :text="100" absolute="rightBottom" type="primary">
          <button type="default">右下</button>
        </uni-badge>
      </view>
    </uni-section>
    <uni-section title="uview-plus组件示例" type="line">
      <view class="data u-btn">
        <up-text color="#fff" text="uview-plus组件示例"></up-text>
        <up-button type="primary" text="确定"></up-button>
        <up-button type="primary" :plain="true" text="镂空"></up-button>
      </view>
    </uni-section>
  </view>
</template>

<script lang="ts" setup>
  import { ref } from 'vue'
  const title = ref('测试');
</script>

<style lang="scss" scoped>
  .content {
    width: 100%;
    min-height: 50vh;

    .data {
      padding: 0 15rpx;
    }
  }
</style>
7.项目运行

根据实际应用场景运行至浏览器或小程序即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/488218.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

了解一波经典的 I/O 模型

最近读了波网络 I/O 相关的文章&#xff0c;做下总结、摘录。&#xff08;未完&#xff09; 经典 I/O 模型 {% checkbox red checked, 阻塞式 I/O&#xff08;blocking I/O&#xff09; %}{% checkbox red checked, 非阻塞式 I/O&#xff08;non-blocking I/O&#xff09; %}…

【优质】「web开发网页制作」html+css+js导盲犬网页制作(5页面)

导盲犬网页目录 涉及知识写在前面一、网页主题二、网页效果Page1、首页Page2、关于导盲犬Page3、阶段Page4、宣传视频Page5、登录 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 四、网页源码HtmlCSSJS 五、源码获取5.1 获取源码包 作者寄语 涉及知识 导盲犬介绍…

flask_restful规范返回值之类型设置

大型的互联网项目中&#xff0c;返回的数据格式&#xff0c;有时是比较复杂的结构。 如&#xff1a;豆瓣电影 https://movie.douban.com/j/chart/top_list?type24&interval_id 100%3A90&action&start20&limit20 返回的值里有 json 或者列表数据&#xff0c…

基于nodejs+vue家装一体化平台python-flask-django-php

提高现下家装一体化平台的准确度&#xff0c;同时降低经济波动带来的不良影响&#xff0c;希望本文能对广大学者的研究提供参考。 前端技术&#xff1a;nodejsvueelementui, Express 框架于Node运行环境的Web框架, 语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&am…

Nodejs沙盒逃逸

Buffer 在较早一点的node.js版本中 (8.0 之前)&#xff0c;当 Buffer 的构造函数传入数字时, 会得到与数字长度一致的一个 Buffer&#xff0c;并且这个 Buffer 是未清零的。8.0 之后的版本可以通过另一个函数 Buffer.allocUnsafe(size) 来获得未清空的内存。 注&#xff1a;关…

elasticsearch 8.12+kibana 8.12

准备工作&#xff1a;1.下载相关的安装包放到/usr/local/ES下面 elasticsearch下载地址:Download Elasticsearch | Elastic elasticsearch-head-master下载地址:https://github.com/mobz/elasticsearch-head/archive/master.zip node下载地址:Index of /dist/ kibana地址:Downl…

CSS及javascript

一、CSS简介 css是一门语言&#xff0c;用于控制网页的表现。 cascading style sheet:层叠样式表 二、css的导入方式 css代码与html代码的结合方式 &#xff08;1&#xff09;css导入html有三种方式&#xff1a; 1.内联样式&#xff1a;<div style"color:red&quo…

C语言 | qsort()函数使用

目录&#xff1a; 1.qsort介绍 2.使⽤qsort函数 排序 整型数据 3.使⽤qsort函数 排序 结构体数据 4. qsort函数的模拟实现冒泡排序 qsort()函数 是一个 C语言编译器函数库自带的排序函数&#xff0c; 它可以对指定数组&#xff08;包括字符串&#xff0c;二维数组&#x…

Qt与编码

ASCII码:一个字节&#xff0c;256个字符。 Unicode:字母&#xff0c;汉字都占用两个字节。 utf-8:字母一个字节&#xff0c;汉字3个字节。 gbk:字母一个字节&#xff0c;汉字2个字节。 gb2312:可以表示汉字&#xff0c;gb2312<gbk。 编码查看&#xff1a; https://www.…

sonar+gitlab提交阻断 增量扫描

通过本文&#xff0c;您将可以学习到 sonarqube、git\gitlab、shell、sonar-scanner、sonarlint 一、前言 sonarqube 是一款开源的静态代码扫描工具。 实际生产应用中&#xff0c;sonarqube 如何落地&#xff0c;需要考虑以下四个维度&#xff1a; 1、规则的来源 现在规则的…

SQLite数据库成为内存中数据库(三)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite 下一篇&#xff1a;未发表 ​​ SQLite数据库通常存储在单个普通磁盘中文件。但是&#xff0c;在某些情况下&#xff0c;数据库可能存储在内存。 强制SQLite数据库纯粹存在的最常见方法在内存中是使用特…

【前端】代码案例

1.猜数字 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>猜数字</title> </head> <…

Redis锁,乐观锁与悲观锁

锁 悲观锁 认为什么时候都会出问题&#xff0c;无论做什么都会加锁 乐观锁 很乐观&#xff0c;认为什么时候都不会出问题&#xff0c;所以不会上锁。 更新数据时去判断一下&#xff0c;在此期间&#xff0c;是否有人修改过这个数据 应用于&#xff1a;秒杀场景 **watch*…

【网络爬虫】(2) requests模块,案例:网络图片爬取,附Python代码

1. 基本原理 1.1 requests 模块 requests 是 Python 中一个非常流行的 HTTP 客户端库&#xff0c;用于发送所有的 HTTP 请求类型。它基于 urllib&#xff0c;但比 urllib 更易用。 中文文档地址&#xff1a;Requests: 让 HTTP 服务人类 — Requests 2.18.1 文档 &#xff0…

FTP 文件传输服务

FTP连接 控制连接&#xff1a;TCP 21&#xff0c;用于发送FTP命令信息 数据连接&#xff1a;TCP 20&#xff0c;用于上传、下载数据 数据连接的建立类型&#xff1a; 主动模式&#xff1a;服务端从 20 端口主动向客户端发起连接 被动模式&#xff1a;服务端在指定范围…

【Linux】 centos7安装卸载SQL server(2017、2019)

一、安装配置 准备一个基础Linux配置&#xff1a; 内存为20GB 运行内存为2GB的系统&#xff08;数据库小于2GB安装不了&#xff09; 1、网络配置 我们需要进行网络的连接 进入 cd /ect/sysconfig/network-script/ 编辑文件ifcfg-ens33 vi ifcfg-ens33 Insert键进行编辑 把ONBOO…

flask_restful规范返回值

使用方法 导入 flask_restful.marshal_with 装饰器 定义一个字典变量来指定需要返回的标准化字段&#xff0c;以及该字段的数据类型 在请求方法中&#xff0c;返回自定义对象的时候&#xff0c; flask_restful 会自动的读 取对象模型上的所有属性。 组装成一个符合标准化参…

k8s的单pod单ip网络模型

背景 在k8s中&#xff0c;不再是每个docker容器一个ip地址&#xff0c;而是每个pod一个ip地址&#xff0c;docker容器只是pod里面的其中一个进程&#xff0c;可能拥有对外的端口号&#xff0c;但是不在为docker容器单独分配ip地址&#xff0c;pod里面的容器共享pod的ip地址 单…

Learn OpenGL 25 法线贴图

为什么要引入法线贴图 我们的场景中已经充满了多边形物体&#xff0c;其中每个都可能由成百上千平坦的三角形组成。我们以向三角形上附加纹理的方式来增加额外细节&#xff0c;提升真实感&#xff0c;隐藏多边形几何体是由无数三角形组成的事实。纹理确有助益&#xff0c;然而…

【数据分享】1929-2023年全球站点的逐月平均海平面压力(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全球气象站…