【uniapp&微信小程序】vue3+ts+vite+pinia+eslint+prettier+husky项目搭建

uniApp -- 学习笔记(vue3+ts) (三)我需要的是了解这几个方法的作用,这一个栏目,是uni选择器的了解,和构想一下使用场景的需求,其实从文档中可以得到的信息这几个方法的重载,选择一个节点,选择一个类的所有节点选择某个区域,调用。其实主要就是拿到这个数据,那么后面就比较理解了,比如selectAll 就是获取只要class 或者 id 所有的节点信息,数据为数组的节点位置信息。这是官网给的说法,听起来云里雾里的,但是可以拿到几个关键信息。拿到选择器,获取一定程度组件的,或者是整个页面的部分或者区域的选择器,提供了上述的几个方法。 阅读详情

目录

前言

一.创建项目

二.配置Pinia

三.配置eslint

四.配置prettier

五.解决eslint和prettier冲突

六.配置husky

七.总结


前言

        【uniapp微信小程序系列】将持续更新分享使用uniapp开发小程序的干货文章。本篇文章是从0搭建uniapp项目,如果是个人项目或者公司无代码规范等,可以参考本篇vue3+ts+vite+pinia搭建项目,如果有规范要求,或者想接入规范,那么本篇文章将从0搭建vue3+ts+vite+pinia项目,并接入代码规范eslint+prettier,及代码提交钩子husky配置。

一.创建项目

        uniapp官网提供了多个版本下载方式,这里我们选择Vue3/Vite版,创建以 typescript 开发的工程:

npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project

创建好后安装依赖并启动:

# 安装依赖
yarn install

# 启动开发环境
yarn dev:mp-weixin

因为我们是开发微信小程序,这里启动后会编译出dist包,在微信开发者工具打开地址dist/dev/mp-weixin,即可预览小程序的效果,并会同步编译更新。

二.配置Pinia

        Pinia这里就不过多介绍,不懂的小伙伴可以看这篇文章,里面有详细介绍及使用方法: 快速搞懂Pinia及数据持久化存储(详细教程)http://t.csdn.cn/dSakD

安装Pinia依赖:

yarn add pinia

main.ts中引入并挂载:

import { createPinia } from "pinia";
import { createSSRApp } from "vue";
import App from "./App.vue";
export function createApp() {
  const app = createSSRApp(App);
  app.use(createPinia())
  return {
    app,
  };
}

新建src/store/user/index.ts,这里以user模块为例:

 import {ref} from "vue"
 import {defineStore} from "pinia"
 // 用户user模块
 export const useUserStore = defineStore("user", () => {
   // token信息
   const token = ref("")
   // 用户信息
   const userInfo = ref({
     id: "",
     name: "测试员",
     phone: "",
   })
   return {
     token,
     userInfo,
   }
 })

接下来就可以进行全局数据的存取:

<template>
  <view>
  {{ userStore.userInfo.name }}
  </view>
</template>

<script setup lang="ts">
import { useUserStore } from "@/store/user";
const userStore = useUserStore()
</script>

到此变成功在项目中引入并使用Pinia了,关于Pinia的更多细节就看上面那篇文章连接就好。

三.配置eslint

安装依赖

yarn add -D eslint

eslint初始化命令

npx eslint --init

初始化选项选择 

(1) How would you like to use ESLint?

选择:To check syntax, find problems, and enforce code style

(2) What type of modules does your project use?

选择:JavaScript modules (import/export)

(3) Which framework does your project use?

选择:Vue.js

(4) Does your project use TypeScript?

选择:Yes

(5) Where does your code run?

选择:Browser

(6) What format do you want your config file to be in?

选择:JavaScript

(7) Would you like to install them now?

选择:Yes

(8) Which package manager do you want to use?

选择:yarn

此时在项目中会产生一个.eslintrc.js文件,因为eslint默认是不会解析.vue后缀文件的,所以还需要额外的解析器,但初始的.eslintrc.js文件中extends配置顺序原因@typescript-eslint/parser把vue-eslint-parser覆盖了。所以这里需要做些修改,配置如下:

module.exports = {
  'env': {
    'browser': true,
    'es2021': true,
    'node': true
  },
  'extends': [
    'eslint:recommended',
    'plugin:vue/vue3-essential',
    'plugin:@typescript-eslint/recommended'
  ],
  'parser': 'vue-eslint-parser',
  'parserOptions': {
    'ecmaVersion': 'latest',
    'parser': '@typescript-eslint/parser',
    'sourceType': 'module'
  },
  'plugins': [
    'vue',
    '@typescript-eslint'
  ],
  'rules': {
    'vue/multi-word-component-names':'off',
    'quotes': ['error', 'single']
  }
}

当我们启动微信小程序时在根目录会产生dist文件,而这个文件我们也不需要eslite检测,这时候就需要将文件设置为不检测,在根目录新建.eslintignore 文件,将不需要检测文件路径写入其中即可,如下:

# 忽略dist目录下文件的语法检查

/dist

 在package.json文件中的scripts中添加lint命令:

{
    "scripts": {
        // eslint . 为指定lint当前项目中的文件
        // --ext 为指定lint哪些后缀的文件
        // --fix 开启自动修复
        "lint": "eslint . --ext .vue,.js,.ts,.jsx,.tsx --fix"
    }
}

 运行命令即可校验代码,如有其他后缀文件加入即可。

四.配置prettier

安装依赖

yarn add -D prettier
yarn add -D eslint-config-prettier #eslint兼容的插件
yarn add -D eslint-plugin-prettier #eslint的prettier

在根目录下面添加.prettierrc.js文件夹,然后将下面的配置添加到其中(我这里只做演示,具体配置根据需要来):

module.exports = {
 // 一行最多多少个字符
	printWidth: 150,
	// 指定每个缩进级别的空格数
	tabWidth: 2,
	// 使用制表符而不是空格缩进行
	useTabs: true,
	// 在语句末尾是否需要分号
	semi: true,
	// 是否使用单引号
	singleQuote: true,
	// 更改引用对象属性的时间 可选值"<as-needed|consistent|preserve>"
	quoteProps: 'as-needed',
	// 在JSX中使用单引号而不是双引号
	jsxSingleQuote: false,
	// 多行时尽可能打印尾随逗号, 可选值"<none|es5|all>",默认none
	trailingComma: 'es5',
	// 在对象文字中的括号之间打印空格
	bracketSpacing: true,
	// jsx 标签的反尖括号需要换行
	jsxBracketSameLine: false,
	// 在单独的箭头函数参数周围包括括号 always:(x) => x \ avoid:x => x
	arrowParens: 'always',
	// 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码
	rangeStart: 0,

}

在package.json文件中的scripts中添加format命令:

{
    "scripts": {
        "format": "prettier --write \"./**/*.{html,vue,ts,js,json,md}\"",
    }
}

运行命令会将项目中文件格式化一遍,如有其他后缀文件加入即可。

五.解决eslint和prettier冲突

        配置完成prettier肯定会和eslint发生冲突,根本原因就是eslint有部分规则与prettier冲突了,这里社区已经为我们提供了解决方案,即:

eslint-plugin-prettier:基于 prettier 代码风格的 eslint 规则,即eslint使用pretter规则来格式化代码。

eslint-config-prettier: 禁用所有与格式相关的 eslint 规则,解决 prettier 与 eslint 规则冲突

 安装依赖

yarn add eslint-config-prettier eslint-plugin-prettier -D

接下来在.eslintrc.js文件的extends数组末尾加上'plugin:prettier/recommended',其作用是:

1.继承.prettierrc.js文件规则

2.开启rules的"prettier/prettier": "error"

3.eslint fix同时执行.prettierrc.js格式化

这时候eslint和prettier的冲突算是解决啦。

六.配置husky

        上面我们已经配置了eslint和prettier各自的命令,但是在实际项目中不能保证每位成员提交代码前都运行格式化命令,那么怎么确保提交代码的质量呢,这时候就需要用到husky了。

husky是用来管理 git hook 的工具,即代码提交过程中会触发的钩子。

安装依赖

yarn add husky -D

在package.json文件中的scripts中添加prepare命令 :

  "scripts": {
    "prepare": "husky install",
  },

其他成员拉项目装依赖的时候就会自动执行该命令来安装husky,我们这里直接yarn run prepare

这时候根目录会产生一个.husky文件,然后使用husky命令添加pre-commit钩子,运行:

yarn husky add .husky/pre-commit "yarn run lint && yarn run format"

运行上面命令后,会在.husky文件下生成一个pre-commit文件,内容如下:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

yarn run lint && yarn run format

这之后,当提交代码运行git commit 命令时,就会执行 yarn run lint 和 yarn run format 命令,当有报错时,代码便不会提交成功,如此一来也保障了代码仓库代码的质量与格式。

七.总结

        本篇文章主要以vue3+ts+vite+pinia项目为基础,再引入eslint+prettier+husky来规范代码质量与格式,这其中还有很多配置后续会继续完善更新(如stylelint的引入等)。


推荐阅读

快速搞懂Pinia及数据持久化存储

Print.js实现打印pdf,HTML,图片

多终端响应式开发(Bootstrap栅格系统原理及实现)

vue中指令式调用封装组件

uniapp+vite+vue3+ts配置eslint代码检查及prettier规范检查 ESLint 是一个用于检测JavaScript代码中的错误和潜在问题的工具。它只关注你写的代码是否正确,不会管你代码的格式;Prettier 则是一个代码格式化工具,它旨在确保代码在缩进、空格、换行、引号和分号等格式化方面遵循一致的规则,在团队开发中,让所有人的代码规范都保存一致的风格,还是比较重要的。 阅读详情

相关推荐

uni-app vue3 ts pinia axios router 搭建移动端H5

记录搭建uniapp过程

weixin_37735748的博客 2955

Uni-app + Vue3 + TS +Vite 创建项目

uni-app 是公司常用的一个框架,随着 vue3 的普及,好多公司的项目都已经开始使用 vue3 + uni-app + vite 开发项目,顺手记录和分享一下我在这过程中遇到的问题。

任磊 7779

5分钟搞定Unity+Visual Studio开发环境配置(含C#游戏开发工作负载)

本文提供了一份详细的Unity与Visual Studio开发环境配置指南,帮助开发者在5分钟内完成C#游戏开发工作负载的设置。从Unity Hub安装到Visual Studio关键组件选择,再到常见问题排查,全面覆盖环境搭建的各个环节,显著提升游戏开发效率。

weixin_29014237的博客 248

uni-app中使用pinia

Pinia(发音为 /piːnjʌ/,如英语中的 peenya) 是 Vue 的存储库,它允许您跨组件、页面共享状态。在服务器端以及小型单页应用程序中,您也可以从使用 Pinia 中获得很多好处: Devtools 支持 追踪 actions、mutations 的时间线 在组件中展示它们所用到的 Store 让调试更容易的 Time travel 热模块更换 不必重载页面即可修改 Store 开发时可保持当前的 State 为 JS 开发者提供适当的 TypeScript 支持以及 自动补全 功能。

码农键盘上的梦 8236

5分钟搞懂MSDNet:用Transformer实现小样本语义分割的保姆级教程

本文详细介绍了MSDNet(Multi-Scale Decoder Network)如何利用Transformer架构实现小样本语义分割。通过多尺度解码器和空间Transformer解码器,MSDNet能够在仅有1-5张标注图像的情况下完成精确分割任务。文章提供了PyTorch代码实例和优化技巧,帮助开发者快速掌握这一前沿技术。

weixin_30832143的博客 506

EV1527 vs HS1527:固定码芯片的STM32解码避坑指南

本文深入解析EV1527与HS1527固定码芯片的技术差异,提供基于STM32的完整解码方案与稳定性优化策略。通过硬件接口配置、状态机实现及示波器诊断,解决工业遥控、安防报警等场景中的解码难题,特别针对时序差异和干扰问题给出实用解决方案。

o0p1q2r3的博客 329

uniapp 小程序 使用vue3+ts运行项目

下载完模板后进行解压,利用vscode打开文件,会发现报这样的错误👇主要原因是没有下载依赖。注意:若不能直接使用命令下载,可去gitee下载模板使用。其中dist里面的dev文件就是小程序打包生成的文件👇。解决以上错误:使用npm i 下载全部依赖即可。第一种:通过HBuilderX可视化界面创建。第二种:通过vue-cli命令行。此时终端会提示操作步骤👇。

weixin_71403100的博客 5669

STK与Matlab连接报错?手把手教你解决mexConnect函数执行问题(附完整避坑指南)

本文针对STK与Matlab连接时常见的“mexConnect函数执行”报错,提供了完整的诊断与解决方案。文章深入剖析了错误根源在于路径冲突或文件损坏,并手把手指导用户通过定位STK连接器文件、正确配置Matlab路径(包括使用addpath命令)以及执行初始化测试三步走策略,彻底解决问题。同时附上版本兼容性检查、安装避坑指南及构建稳健工作流的建议,帮助用户建立可靠的STK-Matlab联合仿真环境。

yolo5detector的博客 472

uni-app中 pinia的使用

使用actions中的方法 在 pinia中 没有mutations,只有 actions,不管是同步还是异步的代码,都可以在actions中完成。使用storeToRefs解构出来的数据是响应式的。然后分别书写其他两个文件和上面的index文件一致。在index中引入我们定义好的两个模块。获取store中的数据。

Destinynever的博客 5505

ConnectionResetError 10054 根因分析与全链路防御指南

ConnectionResetError(错误码10054)是TCP协议中服务端主动发送RST包导致的强制断连,本质并非网络连接失败,而是服务端基于空闲超时、连接满载、TLS协商失败等策略做出的确定性终止决策。理解其底层原理有助于跳出‘重试’误区,转向连接生命周期管理。该错误高频出现在HTTP长连接、WebSocket、第三方API对接等场景,尤其在Nginx反向代理、负载均衡器(如AWS ALB)、WAF设备及内核conntrack机制下极易触发。本文结合Wireshark抓包分析、客户端心跳保鲜、协议指

weixin_30225755的博客 637

FFmpeg视频缩放终极指南:从基础命令到保持宽高比的5种实战技巧

本文是FFmpeg视频缩放的终极指南,详细讲解了从基础命令到保持宽高比的5种实战技巧。针对不同平台(如抖音、B站、Instagram)的分辨率要求,提供了具体的参数模板和批量处理脚本,帮助内容创作者高效、精准地调整视频大小,避免画面变形或黑边问题,实现多平台适配。

juice的博客 457

小程序-uni-app:uni-app-base项目基础配置及使用 / uni-app+vue3+ts+vite+vscode

uniapp微信小程序开发全记录

snow的博客 2万+

AUTOSAR NvM 实车故障深度剖析:车载存储问题快速定位与工程解决方案

软件配置与代码逻辑无问题时,排查底层驱动与ECU硬件,步骤如下:底层驱动排查:排查Fls/Eep驱动配置,是否适配目标MCU(如TC397、S32K),编程/擦除/读取时序是否合理;检查Fls/Eep驱动错误处理逻辑,是否未处理Flash编程失败、读取错误等异常;验证Flash高速编程模式是否启用,是否能提升写入/读取速度;排查MemIf层配置,是否正确对接NvM与Fls/Eep驱动,是否存在调度延迟。

getusushu的博客 78

uni-app基础框架搭建(vue3+ts+vite)

uni-app官网uni-app,uniCloud,serverless,环境安装,创建uni-app,自定义模板,国内特殊情况,更新依赖到指定版本,运行、发布uni-app,运行并发布快应用,运行并发布快应用(webview),运行并发布快应用(webview)-华为,cli创建项目和HBuilderX可视化界面创安装node、hbuilder安装pnpm,相比于npm他的优点是:显著提升了包安装的速度和磁盘空间利用率,同时避免了依赖冲突和重复安装的问题;创建uniapp vue3+ts项目。

LB_bei的博客 7371

作为专家系统与应用的审稿人:提醒你投稿注意事项

本文为《专家系统与应用》(ESWA)期刊投稿指南,重点强调研究方向匹配性、学术质量和写作规范。要求论文以智能系统/算法为核心,突出增量创新并具可验证性,需包含严谨方法论和充分实验验证。写作需结构清晰,符合期刊格式要求,包括明确的研究问题、分类文献综述、详细技术实现和量化结果。投稿前需仔细核对期刊指南,引用相关文献,并妥善处理审稿意见。ESWA注重创新实质性和应用落地价值,建议突出智能系统设计核心,避免成为单纯技术应用描述。

ZhangJiqun&191cm&85kg 1800

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

创建uniapp+vue3+ts项目

创建uniapp+vue3+ts项目

Daqiang0907的博客 1229

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

uniapp pinia安装及使用

uniapp项目中,新一代状态管理插件pinia安装与使用,以及对比vuex

qq_20111965的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

uniapp中使用pinia (针对于uniapp创建vue3项目,uniapp创建vue2项目此方法不可用)

pinia

zhu_liu_kun的博客 3450

uni-app+vue3+ts项目搭建完整流程

项目代码同步更新至码云。

s_156的博客 2901

uniapp中使用pinia 以及持久化插件

这里指定版本下载,默认下载是 4.x以上的版本 与pinia使用 会报错。

const_TLJ的博客 1828

uniapp 小程序 使用 vue3 + ts

1. 全局安装 vue-cli(安装跳过)2. 创建以 typescript 开发的工程(如命令行创建失败,请直接访问。可能会出现以下错误。别慌,npm i 安装全部依赖之后就好了。除了HBuilderX可视化界面,也可以使用。建议直接去下载模版,命令行问题有点多。

我的小鱼干呢! 1235

uniapp添加eslint的最简单方法

你可以重头开始安装eslint,然后初始化,最后安装你所需要的插件,比如eslint-plugin-vue,但是uniapp小程序项目的构建也使用了@vue/cli工具,所以我们可以直接拿来用。 安装: 1$vueadd@vue/eslint 2 3//同样的可以选择@vue/cli-plugin-eslint提供的四个模式 4 5?PickanESLintconfig:Basic 6?Pickadditionallintfeatures:Lintonsave 然......

weixin_41652495的博客 7094

【Uni-App】vscode 开发uni-app 配置eslint、prettier 实现代码检查和代码自动格式化

> 本来很早之前就想总结一下关于uni-app的一些代码自动格式化方面的配置 > 因为公司项目原因,拆分了新老项目,需要带新人,每个人的开发方式不一样 > 所以为了项目的代码风格统一性,以及为了避免后期的git分支操作冲突 > > 我自己的 HbuiiderX开发uni-app时已经搞好了代码检查和自动格式化,奈何其他同事都不会设置,导致了很多次代码提交,显示有很多改动,导致代码覆盖问题。 > 于是有了这篇文章。 > 本文实现的方式是:利用vscode进行编码,用HBuilderX进行开发

Write less,do more 9084

HBuilderX在Uniapp下的Vue环境中配置Eslint+Prettier(全网最详细教程)

HBuilderX在Uniapp下的Vue环境中如何配置Eslint+Prettier的详细教程

驴大毛的博客 3478

创建uni-app-vue3-ts项目

如果 npm install 报错;就运行 npm install --legacy-peer-deps。1.创建以 typescript 开发的工程。3.使用uni-ui组件。2.安装 pinia。4.安装类型声明文件。

2301_76474805的博客 400

【uniapp - vue3】搭建项目模板 第二章 代码风格检测与限制(eslint + prettier)

为什么要有代码风格管理,平常我们开发不是一个人,而是整个团队,每个人都有自己的编码风格,但这样不利于团队之间的配合, 统一的编码风格可以提高代码的可读性,可以更快的理解别人写的代码。

qq_39959538的博客 1485
上一篇: vue中指令式调用封装组件
下一篇: 【uniapp&微信小程序】小程序分包加载机制与配置
琢鸣
琢鸣 新星创作者: 前端开发技术领域 新星创作者: 前端开发技术领域
博客等级 码龄7年 9626粉丝 53原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琢鸣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值