taro之项目初始化模版

news2024/10/5 15:34:29

项目初始化模板

一直以来,在使用 Taro CLI 的 taro init 命令创建项目时,CLI 会提供若干内置模板给开发者选择。但是很多团队都有自己独特的业务场景,需要使用和维护的模板也不尽一致,因此 Taro 支持把项目模板打包成一个能力赋予给开发者。

1.3.9 对 CLI 的模板功能做了以下修改:

  1. CLI 只保留最基础的 default 模板,其它模板被移除。
  2. CLI 会从 CLI 全局配置中读取模版源配置项,然后从模板源拉取模板供开发者选择。
  3. 开发者可以通过修改模板源来使用自己的模板。

模板源​

模板源为 CLI 配置项的 templateSource 字段,可以使用 taro config 命令对其进行操作。

默认模版源​

默认模板源为 taro-project-templates 仓库,原本内置的模板都被抽离到此处。

配置模板源​

模板源支持两种格式,git 模板源 和 url 模板源

git 模板源​

  • GitHub - github:owner/name
  • GitLab - gitlab:owner/name
  • Direct - direct:url
# 初始化项目时可以使用 --clone 选项指定拉取远程模板时使用git clone
taro init --clone

url 模板源​

指向某 zip 包的 url。

编写模板​

模板组织格式​

模板目录组织支持两种,分别是单模板模式模板组模式

单模板模式​

git​

仓库根目录存在 package.json。

模板名为仓库名。

zip 包​

zip 包解压出单文件夹,文件夹根目录包含 package.json。

模板名为 zip 包解压出的文件夹名。

模板组模式​

git​

如默认模板源,仓库根目录下存放着若干模板。

模板名对应根目录下所有文件夹名。

zip 包​

zip 包解压出单文件夹,文件夹内包含若干模板。

模板名对应文件夹内所有文件夹名。

静态模板​

静态模板表示不带逻辑的模板,CLI 会遍历整个模板文件夹,把文件一一拷贝到目标位置。

动态模板​

很多情况下需要为模板加入一些逻辑,从而根据不同的环境生成不同的模板内容。

开发者可以在模板根目录加入 template_creator.js 文件,文件对外 exports 包含 handler 与 basePageFiles 字段的对象:

template_creator.js

function createWhenTs (params) {
  return params.typescript ? true : false
}

const handler = {
  '/global.d.ts': createWhenTs,
  '/tsconfig.json': createWhenTs,
  '/src/pages/index/index.jsx' ({ pageName }) {
    return { setPageName: `/src/pages/${pageName}/${pageName}.jsx` }
  },
  '/src/pages/index/index.css' ({ pageName}) {
    return { setPageName: `/src/pages/${pageName}/${pageName}.css` }
  }
}

const basePageFiles = [
  '/src/pages/index/index.jsx',
  '/src/pages/index/index.css'
]

module.exports = {
  handler,
  basePageFiles
}

模板语言​

请使用 ejs 作为模板语言,各模板文件都将接收到全局模板参数。

默认全局模板参数(模板中可直接使用的变量)​

变量类型说明
projectNamestring项目名
descriptionstring项目描述
versionstringTaro CLI 版本
datestring模板创建时间戳
css'none' or 'sass' or 'stylus' or 'less'样式预处理工具
cssExtstring样式文件后缀
typescriptboolean是否使用 TS
pageNamestringtaro create 时传入的页面名称,默认 'index'
templatestring模板名称

例子​

index.js

<%if (typescript) {-%>
import Taro, { Component, Config } from '@tarojs/taro'
<%} else { -%>
import Taro, { Component } from '@tarojs/taro'
<%}-%>
import { View, Text } from '@tarojs/components'
import './<%= pageName %>.<%= cssExt %>'

handler 字段​

handler 用于控制是否生成某文件,或给文件传入特定参数。

handler: object​

属性类型value
文件路径function处理函数

文件路径以 “/” 开头,代表模板文件夹根目录

处理函数​

params: object

属性类型说明
projectNamestring项目名
descriptionstring项目描述
versionstringTaro CLI 版本
datestring模板创建时间戳
css'none' or 'sass' or 'stylus' or 'less'样式预处理工具
typescriptboolean是否使用 TS
pageNamestring页面名称
templatestring模板名称
templatePathstring模板路径
projectPathstring目标路径
period'createApp' or 'createPage'taro init 创建项目或 taro create 创建页面

return: boolean/object

返回值说明

取值说明
true创建文件
false不创建文件
object创建文件,返回的 object 的字段会被合并到全局模板参数中。

若返回值为 object,其中某些属性有特殊作用:

属性类型说明
setPageNamestring将替换当前文件的输出路径
changeExtboolean是否自动替换文件后缀

例子​

当用户选择了使用 typescript 时,才生成 global.d.ts 和 tsconfig.json 文件。

template_creator.js

function createWhenTs (params) {
  return params.typescript ? true : false
}

const handler = {
  '/global.d.ts': createWhenTs,
  '/tsconfig.json': createWhenTs
}

module.exports = { handler }

basePageFiles 字段​

basePageFiles 告诉 CLI,当用户使用 taro create 命令创建页面时,创建以下文件。

例子​

结合 handler 字段,创建新页面。

当用户使用命令 taro create --page=detail 时,会创建 /src/pages/detail/detail.jsx 与 /src/pages/detail/detail.css 两个文件。

template_creator.js

const handler = {
  '/src/pages/index/index.jsx' ({ pageName }) {
    return { setPageName: `/src/pages/${pageName}/${pageName}.jsx` }
  },
  '/src/pages/index/index.css' ({ pageName}) {
    return { setPageName: `/src/pages/${pageName}/${pageName}.css` }
  }
}

const basePageFiles = [
  '/src/pages/index/index.jsx',
  '/src/pages/index/index.css'
]

module.exports = {
  handler,
  basePageFiles
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

思科模拟器 | 生成树协议STP、RSTP、HSRP配置

一、生成树协议STP 概念介绍&#xff1a; 生成树协议是一种网络协议&#xff0c;用于在交换机之间建立逻辑上的树形拓扑结构避免产生环路。为了完成这个功能&#xff0c;生成树协议需要进行些配置&#xff0c;包括根桥的选举、端口的状态切换等。 步骤明细&#xff1a; 使用思…

itop-3568 开发板系统编程学习笔记(21)PWM 应用编程

【北京迅为】嵌入式学习之Linux系统编程篇 https://www.bilibili.com/video/BV1zV411e7Cy/ 个人学习笔记 文章目录 在设备树打开 PWMsysfs 方式控制 PWMPWM 应用编程 在设备树打开 PWM RK3568 有 16 个 PWM 控制器&#xff0c;本文件将以 PWM0 为例进行实验&#xff0c;为什么…

如何在PowerShell中查找、添加、修改和删除环境变量:解决手动设置环境变量后报命令失效的问题

简介 PowerShell是Windows平台上的一种命令行工具&#xff0c;它可以方便地查找、添加、修改和删除环境变量。在本文中&#xff0c;LZ将介绍如何在PowerShell中进行这些操作。 查找环境变量 在PowerShell中查找环境变量非常简单。只需要使用Get-ChildItem命令&#xff0c;以…

LED驱动 中断

1、用字符设备驱动框架和平台设备驱动框架实现LED驱动 1.1 用字符设备驱动框架-----》led2 控制led2闪烁 1.应用层&#xff1a; 1 open&#xff08;“/dev/haha0”&#xff09; 2 while&#xff08;1&#xff09; ioctl&#xff08;fd&#xff0c;LED_ON&#xff09;&#xff…

java的社区养老服务系统 ssm空巢老人

创新点&#xff1a; 1、根据时间、类型统计用户下单记录&#xff0c;形成可视化图形&#xff08;饼状图&#xff09; 2、根据用户爱好推荐项目 包含模块&#xff1a;关于我们、联系我们、外链信息、资讯类型、服务资讯、服务类型、服务项目、案例类型、服务案例、讨论类型、讨论…

引入Tuning function design的自适应反步控制方法 上篇

引入Tuning function design的自适应反步控制方法 上篇 目录 引入Tuning function design的自适应反步控制方法 上篇尝试用推迟参数设计解决高阶不匹配系统的控制器设计问题问题描述控制器设计小结上一篇文章写了如何通过推迟参数设计的方法来解决不匹配条件下的系统反步控制设…

【原型设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;使你能够复制已有对象&#xff0c;而无需使代码依赖它们所属的类&#xff0c;同时又能保证性能。 这种模式是实现了一个原型接口&#xff0c;该接口用于创建当前对象的克隆。当直接创…

IT项目管理之软件测试

1. 定义 软件测试是使用人工或者自动的手段来运行或者测定某个软件系统的过程&#xff0c;其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。 在软件投入使用前&#xff0c;要经过一系列的严格测试&#xff0c;才能保证交付质量。 2. QC & QA &a…

会声会影导入视频是黑色的 会声会影导入视频只有声音

会声会影是一款功能很成熟的视频编辑软件&#xff0c;其友好的界面设计能照顾到初学者的需求&#xff0c;同时配置的强大功能可满足进阶者的需要。不过由于或硬件或软件的原因&#xff0c;可能会出现会声会影导入视频是黑色的&#xff0c;会声会影导入视频只有声音的问题。本文…

Docker的实际应用

一、 数据持久化 我们什么情况下要做数据持久化呢&#xff1f; 一定是在做容器之前先预判好哪些文件是要永久存储的&#xff0c; 而不会跟着它容器的一个生命周期而消失。 比如说配置文件、 日志文件、 缓存文件或者应用数据等等。 数据初始化有三种类型。 第一种 volumes&…

浏览器缓存策略:强缓存和协商缓存

浏览器缓存&#xff1a;其实就是在本地使用的计算机中开辟一个内存区&#xff0c;同时也开辟一个硬盘区&#xff0c;作为数据传输的缓冲区&#xff0c;然后利用这个缓冲区来暂时保护用户以前访问的信息通常浏览器的缓存策略分为两种&#xff1a;强缓存和协商缓存&#xff0c;强…

Vmware 搭建 Bitnami GitLab CE

Vmware 搭建 Bitnami GitLab CE 下载 Bitnami GitLab CE导入到 Vmwaressh 登录到虚拟机获取 root 用户密码访问 GitLab CE关机命令扩展磁盘配置 tls 证书安装 GitLab Runner注册 GitLab Runner其他&#xff0c;配置 docker 信任自签名证书 下载 Bitnami GitLab CE 下载地址&am…

Photoshop如何使用基础功能?

文章目录 0.引言1.菜单栏2.工具箱 0.引言 笔者从开始科研时就接触过Photoshop&#xff08;PS&#xff09;&#xff0c;这么多年一直用着感觉有些陌生&#xff0c;在每次使用PS时总感觉有些抵触&#xff0c;这状态说明还未入门。为了入门PS&#xff0c;笔者从头熟悉PS的菜单和工…

一文弄懂Jupyter的配置与使用(呕心沥血版)

Jupyter 是一个基于 Web 的交互式计算平台&#xff0c;使用户能够创建和共享文档&#xff0c;这些文档包含实时代码、方程式、可视化图表和解释文字。Jupyter 在数据分析领域被广泛应用&#xff0c;它提供了一个直观、交互式的操作界面&#xff0c;使得用户能够更容易地探索数据…

MybatisPlus入门和分页和条件查询里面的条件和null值的处理方式和查询投影和查询条件设置

MybatisPlus 简化了mybatis之前的在springboot整合MyBatis时需要自己写sql语句在接口中&#xff0c;现在只需要让接口继承BaseMapper<实体类>&#xff0c;然后在测试类中接口.增删改查方法&#xff08;&#xff09;即可 不用像springboot整合mybatis一样勾选spring web…

【Python】【进阶篇】9、Django路由系统精讲

目录 Django路由系统精讲1. Django 路由系统应用1&#xff09;配置第一个URL实现页面访问2&#xff09;正则与正则分组使用3&#xff09;正则捕获组使用 2. path()与re_path() Django路由系统精讲 在《URL是什么》一节中&#xff0c;我们对 URL 有了基本的认识&#xff0c;在本…

易基因:禾本科植物群落的病毒组丰度/组成与人为管理/植物多样性变化的相关性 | 宏病毒组

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 现代农业通过简化生态系统、引入新宿主物种和减少作物遗传多样性来影响植物病毒的出现。因此&#xff0c;更好理解农业生态中种植和未种植群落中的病毒分布&#xff0c;以及它们之间的病…

解析Mybaits核心配置文件属性

目录 1.environment 2.transactionManager 3.dataSource 4.peoperties 5.mapper 先来看看mybatis核心配置文件代码 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN&qu…

02- stable diffusion的基本使用

stable diffusion的基本使用 对应视频 https://www.bilibili.com/video/BV1Q14y1f7XJ/https://www.bilibili.com/video/BV1av4y1E74C/ 一、下载 1.1 官方github&#xff1a; 官方github&#xff1a; GitHub - Stability-AI/stablediffusion: High-Resolution Image Synth…

Linux进程命令

目录 前言 基本命令 PS命令 语法 字段解释 栗子 top命令 语法 参数解释 栗子 kill命令 语法 参数解释 栗子 前言 进程是正在执行的一个程序或命令&#xff0c;每一个进程都是一个运行的实体&#xff0c;都有自己的地 址空间&#xff0c;并占用一定的系统资源。 基本命…