let points = [{ lat: 111, lon: 111 }, { lat: 99999999, lon: 9999999 }, { lat: 999, lon: 999 }, { lat: 111, lon: 111 }, { lat: 222, lon: 222 }] let indexArr = [0] let distanceArr = [] for (var i = 0; i < points.length - 1; i++) { let a = points[i] let b = points[i + 1] let aValue = a.lat + a.lon let bValue = b.lat + b.lon let abDistance = Math.abs(aValue - bValue) distanceArr.push(abDistance) if (abDistance > 1000) { indexArr.push(i + 1) } } let last = indexArr[indexArr.length - 1] if (last != points.length) { indexArr.push(points.length) } console.log(distanceArr) console.log(indexArr) for (var ii = 0; ii < indexArr.length - 1; ii++) { let indexBegin = indexArr[ii] let indexEnd = indexArr[ii + 1] console.log(indexBegin, indexEnd) let smallArr = points.slice(indexBegin, indexEnd) console.log(JSON.stringify(smallArr)) }
前端
uniapp使用permision判断隐私权限
const permision = require("@/utils/permission.js"); judgeIosPermission: function (permisionID) { var result = permision.judgeIosPermission(permisionID); console.log(result); var strStatus = result ? "已" : "未"; console.log(permisionID + "权限" + strStatus + "获得授权"); if (result) { console.log("iOS有权限"); } else { this.alertHaveNoAuth(); } }, async requestAndroidPermission(permisionID) { var result = await permision.requestAndroidPermission(permisionID); var strStatus; if (result == 1) { strStatus = "已获得授权"; } else if (result == 0) { strStatus = "未获得授权"; } else { strStatus = "被永久拒绝权限"; } if (result != 1) { this.alertHaveNoAuth(); } else { console.log("安卓有权限"); } console.log(permisionID + strStatus); }, alertHaveNoAuth() { uni.showModal({ title: "未开启通讯录权限", confirmText: "去设置", success: function (res) { if (res.confirm) { permision.gotoAppPermissionSetting(); } }, }); },
HBuilderX新建uniapp项目,并导入uview
一、HBuilderX新建uniapp项目,默认模板
若是vue-cli创建的项目,要安装以下依赖
npm i sass -D
npm i sass-loader -D
二、打开插件市场,使用HBuilderX导入插件uview2
https://ext.dcloud.net.cn/plugin?id=1593
三、修改main.js
代码最底部插入
import uView from '@/uni_modules/uview-ui'
Vue.use(uView)
四、修改uni.scss
代码最底部插入
@import '@/uni_modules/uview-ui/theme.scss';
五、修改App.vue
代码最底部插入
<style lang="scss">
/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
@import "@/uni_modules/uview-ui/index.scss";
</style>
六、修改pages.json
插入easycom,与pages平级
"easycom": {
"^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue"
},
参考文档
安装指定版本的npm
sudo npm install npm@latest -g //升级到最新版
sudo npm install npm@xx -g //升级到指定版本
npm version // 查看版本详情
语言类型
强类型语言
强类型语言也称为强类型定义语言。 是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。 java、.NET、C/C++等都是强制类型定义的。 也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。
弱类型语言
弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动。 弱类型语言包括:VB,PHP,JavaScript等语言。 其中VBScript是动态语言,是一种类型不安全的原因。
动态类型语言
动态类型语言:是指在运行期间才去做数据类型检查的语言。在用动态语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。
静态类型语言
静态类型语言:与动态类型语言刚好相反,它的数据类型检查发生在在编译阶段,也就是说在写程序时要声明变量的数据类型。C/C++、C#、JAVA都是静态类型语言的典型代表。
HbuilderX mac版配置 2022年8月24日
Setting.json
{
"adb.path" : "/Users/lixiang/Documents/platform-tools/adb",
"alipayApp.devTools.path" : "/Applications/小程序开发者工具.app",
"dir.exclude" : ".git,.cvs,.svn,node_modules,unpackage,dist",
"editor.codeassist.px2upx.enabel" : false,
"editor.contentAssistSelectionMode" : "Alt+数字模式",
"editor.formatOnSave" : true,
"editor.insertSpaces" : true,
"editor.lineHeight" : "1",
"editor.minimap.enabled" : false,
"editor.saveOnFocusLost" : false,
"editor.tabSize" : 2,
"editor.wordWrap" : true,
"terminal.type" : "内置终端",
"weApp.devTools.path" : "/Applications/wechatwebdevtools.app"
}
jsbeautifyrc.js(此处使用的是原始文件)
module.exports = {
parsers: {
".js": "js",
".json": "js",
".njs": "js",
".sjs": "js",
".wxs": "js",
".css": "css",
".nss": "css",
".wxss": "css",
".acss": "css",
".ttss": "css",
".qss": "css",
".html": "html",
".ux": "html",
".wxml": "html",
".nml": "html",
".vue": "html",
".nvue": "html",
".axml": "html",
".swan": "html",
".ttml": "html",
".qml": "html"
},
options: {
"indent_size": "1",
"indent_char": "\t",
"indent_with_tabs": false, //使用tab缩进
"eol": "\r\n", //行结束符
"end_with_newline": false, //使用换行结束输出
"indent_level": 0, //起始代码缩进数
"preserve_newlines": true, //保留空行
"max_preserve_newlines": null, //最大连续保留换行符个数。比如设为2,则会将2行以上的空行删除为只保留1行
"space_in_paren": false, //括弧添加空格 示例 f( a, b )
"space_in_empty_paren": false, //函数的括弧内没有参数时插入空格 示例 f( )
"jslint_happy": false, //启用jslint-strict模式
"space_after_anon_function": false, //匿名函数的括号前加空格
"brace_style": "collapse", //代码样式,可选值 [collapse|expand|end-expand|none][,preserve-inline] [collapse,preserve-inline
"unindent_chained_methods": false, //不缩进链式方法调用
"break_chained_methods": false, //在随后的行中断开链式方法调用
"keep_array_indentation": false, //保持数组缩进
"unescape_strings": false, //使用xNN符号编码解码可显示的字符
"wrap_line_length": 120,
"e4x": false, //支持jsx
"comma_first": false, //把逗号放在新行开头,而不是结尾
"operator_position": "before-newline",
"unformatted": ["wbr"],
"html": {
"indent_handlebars": true,
"indent_inner_html": true,
"indent-scripts": "normal", //[keep|separate|normal]
"extra_liners": [] //配置标签列表,需要在这些标签前面额外加一空白行
}
}
}
package.json
{
"dependencies": {
"base-64": "^1.0.0",
"dayjs": "^1.11.3"
},
"devDependencies": {
"eslint-config-standard-vue-ts": "^1.0.21"
},
"scripts": {
"lint": "eslint ./pages/ --ext .js,.vue",
"lint:fix": "eslint ./pages/ --ext .js,.vue --fix"
}
}
eslint配置 .eslintrc.js
module.exports = {
extends: [
'standard-vue-ts'
],
rules: {
'space-before-function-paren': 'off',
'indent': 'off',
'vue/html-indent': 'off',
'vue/html-closing-bracket-newline': 'off',
'vue/singleline-html-element-content-newline': 'off'
},
globals: {
getApp: true,
uni: true,
$: true,
},
}
常用命令
npm run lint
npm run lint:fix
《Vue3+Koa2》2.6 路由跳转的三种方式
一、router-link
<router-link to="/login">去登录</router-link>
二、传统跳转
goHome() {
this.$router.push("/welcome")
}
三、composition API跳转
<script setup>
import {useRouter} from 'vue-router'
let router = useRouter()
const goHome = () => {
router.push('/welcome')
}
</script>
《Vue3+Koa2》2.5 打印并注入环境变量
一、打印环境变量
main.js
------------
import { createApp } from 'vue'
import App from './App.vue'
// vite项目用import.meta.env | webpack项目是process.env
console.log("环境变量=>", JSON.stringify(import.meta.env,null,2))
createApp(App).mount('#app')
二、注入环境变量
- 在项目根目录中新建文件.env.dev
- 文件内容,新增变量必须以VITE开头,例如VITE_name=lixiang
- 修改package.json中的调试指令
"dev": "vite --mode dev"
《Vue3+Koa2》2.4 介绍vite.config.js
一、将端口改为8080
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// https://vitejs.dev/config/
export default defineConfig({
server:{
port:8080
},
plugins: [vue()]
})
《Vue3+Koa2》2.2 制定目录结构
public
src
api
assets
components
config
router
store
utils
views
App.vue
main.js
.gitignore
.env.dev
.env.test
.env.prod
index.html
vite.config.js