前言 这几天在写微信 H5 的项目,有一个功能是网页跳转小程序,遇到了非常坑的问题,因此记录一下
坑点 开始使用 要跳转小程序,就要用到微信 SDK 的开放标签 wx-open-launch-weapp
我们需要在 jssdk 中注册
wx.config({ // ... 其他配置按照需求配置 openTagList: ["wx-open-launch-weapp"] // 填入这个玩意儿 }) 正常使用下,我们就是这么用
<wx-open-launch-weapp id="launch-btn" username="gh_xxxxxxxx" path="pages/home/index?user=123&action=abc" > <!-- script 标签不能省略 --> <script type="text/wxtag-template"> <button>打开小程序</button> </script> </wx-open-launch-weapp> 顺便吐槽,username 这个字段是小程序的原始ID,太蠢了…
好,按照以上操作,最简单版本的跳转可以了,但是问题来了,如果你需要非常复杂的样式呢?
踩坑 根据官方文档说明
如果所使用的标签允许提供插槽,由于插槽中模版的样式是和页面隔离的,因此需要注意在插槽中定义模版的样式。 意思是,写在这个标签里的模板样式,是引用不到外界的,你要么写内联样式,要么在 script 里写 style 标签。
所以当你需要在现成的一个按钮外加这么一个标签,那么你的样式可能就会混乱,甚至标签不见。
比如
<style> .btn { color: red; } </style> <wx-open-launch-weapp id="launch-btn" username="gh_xxxxxxxx" path="pages/home/index?user=123&action=abc" > <!-- script 标签不能省略 --> <script type="text/wxtag-template"> <style> ....
前言 最近在学习 Golang,但是由于网络问题安装老出错,所以稍微记录一下,比较简单。
版本 go 1.17
安装 首先就是安装,如果没有代理的话可以走 https://golang.google.cn/ 或者 https://gomirrors.org/ 这两个网站下载,有代理的话正常官网就行了。
我这里是 Windows 环境,Linux 和 mac 下估计会简单一点吧。
首先是选择安装路径,默认是在 C:\Program Files\Go ,不过我改成了 C:\go 的路径方便自己管理,当然也可以安装在其他盘符。
这里是重点
安装完成后,进入系统环境变量,将 GOPATH 的路径改成 C:\go 之后选中 Path (记住是用户变量里的,不是系统变量),点击“编辑” 看看有没有关于 Go 的环境变量,有的话就修改成 C:\go\bin 没有的话就加上 点击确定保存 查看版本号 接下来在终端里输入 go version 查看版本号
go version 返回正常的话说明安装没问题
之后输入 go env 查看环境变量是否已经改成你之前修改的了,如果没有修改成功,之后的一些操作可能会报错
go env 设置代理 因为国内网络环境问题,我们之后的一些包会安装失败,所以这个时候咱们把代理切到国内,可以选择 goproxy.io 或者 goproxy.cn
这里我选择的是 cn 的,根据教程设置一下环境变量就行,选哪个不重要,重要的是能用就行。
go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct VSCode 配置 配置好以上,接下来我们来配置 VSCode ,如果你不使用 VSCode 可以跳过这一步。...
前言 在上一家公司上班的时候,很少多人协同开发,所以 Git 上的操作仅限于 add, commit, push 等等简单的。
但是目前这家公司,多人协同就非常的频繁,所以稍微记录一下操作,免得自己以后忘记了。
一般公司都是用 GitLab 比较多,所以这里也按照 GitLab 来写。
Git WorkFlow Fork/Clone 首先我们在需要多人协作的项目中将项目 Fork 到我们自己的仓库(当然也可以直接 Clone,但是防止对源仓库误操作,最好还是 Fork)
添加 Remote 添加远端仓库的 Remote
git remote add <远程仓库名(自己取)> <远程仓库地址> # 举例 :git remote add dev https://remote.repo.address 本地 Pull git switch master # or git checkout master git pull <远程仓库名> <远程分支>:<本地分支> # 举例 :git pull dev master:master 建议本地的 master(main) 分支只做同步,代码修改在新建分支上,确保不破坏主分支
新建分支 如果你的公司比较严格,需要每个 Feature/Fix 都要新建一个分支,那就按照需求新建分支,如果没有特别要求,就按照自己名字新建分支也可以。
git checkout -b <分支名> # 举例 :git checkout -b fix-type 处理冲突 多人开发中,肯定是每个人开发自己的部分先后提交。如果各自管各自的部分,不会改到别人的部分,基本上没什么冲突。但是一旦出现两人同时修改了一个文件的情况,就要开始处理冲突了。...
前言 在项目开发过程中,随着团队成员的增加以及项目体量的增大,我们需要更加规范我们的代码,除了一些概念性的规范(如 Airbnb 规范),我们还需要通过引入 ESLint 来自动化规范我们的代码。
引入 首先确保我们的项目中使用 Webpack,先引入ESLint Webpack Plugin
yarn add eslint-webpack-plugin -D # or npm install eslint-webpack-plugin --save-dev 之后在 Webpack 配置中引入
const ESLintPlugin = require('eslint-webpack-plugin') // ... module.exports = { // ... plugins: [ // ... new ESLintPlugin() // ... ] // ... } 如果使用的编辑器是 VSCode,记得安装插件 ESLint
生成规范 ESLint 会通过本地文件 .eslintrc.js 来判断规则,我们可以自己编写规则,也可以直接引入现成的规则,比如: Airbnb, Standard 等。
通过命令生成文件
npx eslint --init # 如果 eslint 全局安装了,可以如下 eslint --init 根据提示来进行选择就可以了,选择好之后再运行项目,就会发现项目会报一些 error/warning 了,这些都是正常的,我们可以通过命令行 --fix 来修复一些简单的规范问题...
创建一个context 首先需要通过React.createContext定义一个context,一下的定义需要在函数外定义
// ./src/Store.js const StoreContext = React.createContext() 如果你使用TS,那么createContext中需要传入一个默认值
// ./src/Store.tsx interface StoreProps { count: number setCount: Function } const StoreContext = React.createContext<StoreProps>({} as StoreProps) // 如果不加 'as StoreProps',因为里面的参数都是必填,会报错 // 或者传入{ count: 0, setCount: () => {} }这样当做默认值 // 也可以把类型定义为 'StoreProps | null',然后传入null,但不是很推荐 创建一个Provider export default function Store({ children }) { const [count, setCount] = useState(0) return ( <StoreContext.Provider value={{ count, setCount }} > {children} </StoreContext.Provider> ) } 使用useContext // ....