移动端的小方法

1.h5页面-手机拨号,发短信
  • 拨号:
<a href="tel://0769-22210105">联系客服</a>
  • 发短信
<a href="sms:10086?body=message_body">给 10086 发短信</a>  
  • 发送地理定位
<a href="geopoint:116.281469,39.866035">我的位置</a>
2.vue 模块下的state访问
 this.$store.state.modulesName.var
  
  @modulesName 是我们定义的模块名字
  @var 是模块里的state里的变量名
3.npm包的发布
  • 首先要建立自己的npm账号(不过我是直接去npm注册的,注册之后会有个邮件,点击链接校验即可)
  npm adduser  // 新建用户
```ts
- 初始化包
```vue
  npm init
  • 参数列表
name:填写你这个包的名字,默认是你这个文件夹的名字。
不过这里要着重说一下,最好先去npm上找一下有没有同名的包。
最好的测试方式就是,在命令行里面输入npm install 你要取的名字,
如果报错,那么很好,npm上没有跟你同名的包,你可以放心大胆地把包发布出去。
如果成功下载下来了。。。那么很不幸,改名字吧。。。

version:你这个包的版本,默认是1.0.0

description:其实我也不知道是什么,按回车就好了。。。,
这个用一句话描述你的包是干嘛用的,
比如我就直接:‘a plugin for express.register routes base on file path’

entry point:入口文件,默认是Index.js,你也可以自己填写你自己的文件名

test command:测试命令,这个直接回车就好了,因为目前还不需要这个。

git repository:这个是git仓库地址,如果你的包是先放到github上或者其他git仓库里,
这时候你的文件夹里面会存在一个隐藏的.git目录,
npm会读到这个目录作为这一项的默认值。如果没有的话,直接回车继续。

keyword:这个是一个重点,这个关系到有多少人会搜到你的npm包。
尽量使用贴切的关键字作为这个包的索引。
我这个包嘛,第一是在express下工作的,然后又是一个插件plugin,
然后又是一个注册路由route用的,而这个路由又是基于文件目录dir,
所以很好就得出我的包的索引关键字。
  • 编写index.js文件
 const toast = function (vue, options) {
    
    
 		
        vue.prototype.msg = "npm Toast"
 }
 
 export default toas
  • 发布npm包, 发布之前需要登陆一下
npm login
//之后输入自己的用户和密码

npm publish
//发布包
  • 最后,在npm包的官网上可以查询到你的包

4.vue项目里,img标签报错,添加默认图片

问题描述: 后台返回了图片路径,但是数据库中,并没有图片资源。毕竟是使用了第三方的存储.
解决方案:使用img标签的onerror属性。

// 直接加载
<img src="../../assets/img/timg.jpg">
// 设置为logo.png加载失败后显示的默认图片
<img src="/logo.png" onerror="this.src=../../assets/img/timg.jpg">

webpack改变图片的路径

<img src="/logo.png" :onerror="defaultImg">

data() {
    
    
  return {
    
    
    defaultImg: 'this.src="' + 
    require('../../assets/img/timg.jpg') + '"'
  }
}
5.axios 实现loading加载提示

使用拦截器就可以了,请求拦截,和响应拦截。其实思考一下。

  • 0 (未初始化): (XMLHttpRequest)对象已经创建,但还没有调用open()方法。
  • 1 (载入):已经调用open() 方法,但尚未发送请求。
  • 2 (载入完成): 请求已经发送完成。
  • 3 (交互):可以接收到部分响应数据。
  • 4 (完成):已经接收到了全部数据,并且连接已经关闭。
// 请求的地方设置成true
axios.interceptors.request.use(function () {
    
    
		store.isLoading = true
})

// 响应的地方设置成false
axios.interceptors.response.use(function () {
    
    
		store.isLoading = fasle
})

如果页面的请求很多,比如页面有7,8个请求。可以设置一个队列或者在store.requestCount 请求的次数。

6.qs库

作用:使用qs库对url进行处理

  • 方法: stringify()
var obj = {
    
    
	a: "kingEND",
    b: "bname"
}
 var res = qs.stringify(obj)
 console.log(res)

结果显示:

a="kingEND"&b="bname"
  • 方法: parse()
var url = 'method=query_sql_dataset_data&projectId=85&appToken=7d22e38e-5717-11e7-907b-a6006ad3dba0';
var res = qs.parse(url);
console.log(res)

结果显示:

{
    
    
	method: "query_sql_dataset_data",
    projectId: "85",
    appToken: "7d22e38e-5717-11e7-907b-a6006ad3dba0"
}
7.vue的v-for指令无法使用在tr、td中
因为tr,td 不含语义,所以浏览器不显示。。。
8.vue 打包之后,npm run dev页面空白

原因是因为改了,config,index.js文件的assetpulblic ‘./’,如果改了build类里的,dev类里的assetpublic './‘也会被更改。

npm run dev 是加载dev类里的配置,而npm run build是加载build里的类。
  • 图片加载问题
css样式里的图片加载问题。

如果你用了vue-cil,那么在build目录下找到utils.js中的
ExtractTextPlugin.extract({
    
    }),
里面添加下面这个属性就完美解决了publicPath: '../../'
9.unix时间转化

后端返回一个unix时间戳,前端进行处理, 转化成 yyyy-mm-dd HH:MM:SS格式

let time = 1511860994
let date = new Date(time * 1000)
date.getFullYear()

Guess you like

Origin blog.csdn.net/weixin_41056807/article/details/115126135