• 脚手架
  • Vue UI
  • 安装
    • NPM or Yarn
    • 浏览器引入
  • 引入
    • 按需加载(推荐)
    • 按需引入
    • 全量引入
  • 使用前准备
    • Normalize or Reset
    • FastClick
    • 产出包目录
    • Px to Rem
  • 配置主题和字体
  • 使用

    快速上手

    脚手架

    新项目可通过vue-cli初始化集成mand-mobile现有项目集成请参考安装)

    • Vue CLI 2/3(模板)(支持1.x)
    1. vue init mand-mobile/mand-mobile-template my-mand-mobile-project
    • Vue CLI 3(插件)(支持1.x/2.x)
    1. vue create my-project
    2. cd my-project
    3. npm install --save-dev vue-cli-plugin-mand
    4. vue invoke mand
    • Vue CLI 3(示例)(支持1.x/2.x)

    • Nuxt(示例)

    Vue UI

    通过Vue UI以图形化界面创建和管理项目,并通过安装插件vue-cli-plugin-mand集成mand-mobile

    • 启动Vue UI
    1. vue ui
    • 完成项目创建后,点击插件并搜索mand-mobile,点击搜索结果完成安装快速上手 - 图1

    安装

    NPM or Yarn
    1. npm install mand-mobile --save
    2. # OR
    3. yarn add mand-mobile
    浏览器引入

    在浏览器中使用scriptlink标签直接引入文件,并使用全局变量 window['mand-mobile']

    npm发布包内的mand-mobile/libmand-mobile/lib-vw目录下提供了JS以及CSS bundle,参考产出包目录)。

    你也可以通过快速上手 - 图2或者UNPKG进行下载。

    建议直接使用 CDN 引入时锁定版本,以免将来受到非兼容性更新的影响。锁定版本的方法请查看unpkg.com。

    引入

    按需加载(推荐)

    使用 babel-plugin-import 或 ts-import-plugin, 无需配置style,默认加载目录为lib,其他目录参考产出包目录

    1. {
    2. "plugins": [
    3. ["import", {
    4. "libraryName": "mand-mobile",
    5. "libraryDirectory": "lib"
    6. }]
    7. ]
    8. }
    1. // ts-loader option
    2. {
    3. rules: [
    4. {
    5. test: /\.tsx?$/,
    6. loader: 'ts-loader',
    7. options: {
    8. appendTsSuffixTo: [/\.vue$/],
    9. transpileOnly: true,
    10. getCustomTransformers: () => ({
    11. before: [
    12. require('ts-import-plugin')({
    13. "libraryName": "mand-mobile"
    14. })
    15. ]
    16. })
    17. }
    18. }
    19. ]
    20. }

    组件使用:

    如果没有以上配置,会全量引入,需手动引入全部样式, 参考全量引入

    1. import { Button } from 'mand-mobile'
    按需引入
    1. import Button from 'mand-mobile/lib/button'
    全量引入
    1. import Vue from 'vue'
    2. import mandMobile from 'mand-mobile'
    3. import 'mand-mobile/lib/mand-mobile.css'
    4. Vue.use(mandMobile)

    使用前准备

    Normalize or Reset

    为标准化浏览器元素的样式,推荐引入Normalize.css或Reset CSS

    FastClick

    为避免浏览器兼容问题引起的点击问题, 推荐引入FastClick

    1. import FastClick from 'fastclick'
    2. if ('addEventListener' in document && 'ontouchstart' in window) {
    3. FastClick.prototype.focus = function (targetElement) {
    4. targetElement.focus()
    5. }
    6. document.addEventListener('DOMContentLoaded', function () {
    7. FastClick.attach(document.body)
    8. }, false)
    9. }
    产出包目录

    产出包中包含以下几种不同目录,分别适用于不同场景的代码,可根据实际需要选择一个目录加载:

    1. ├── mand-mobile
    2. ├── components # 源码,一般自定义主题等
    3. ├── lib # 编译后,样式单位px,一般用于自定义适配方案等(默认)
    4. ├── lib-vw # 编译后,样式单位vh/vw,一般用于非兼容场景,无需额外配置
    5. ├── ...
    Px to Rem

    产出包lib目录中的组件样式以px为单位,并且以iPhone6屏幕 “物理像素” 宽度750为基准 (即普通 “逻辑像素” 值的2倍大小)。在实际项目中,可根据具体情况使用postcss-pxtorempx单位转成rem,从而实现不同设备下等比缩放的效果。

    如转换基准为1rem = 100px

    • .postcssrc.js配置
    1. module.exports = {
    2. plugins: [
    3. require('postcss-pxtorem')({
    4. rootValue: 100,
    5. minPixelValue: 2,
    6. propWhiteList: []
    7. })
    8. ]
    9. }
    • webpack配置
    1. const pxtorem = require('postcss-pxtorem');
    2. // Postcss
    3. webpackConfig.postcss.push(pxtorem({
    4. rootValue: 100,
    5. minPixelValue: 2,
    6. propWhiteList: []
    7. }))
    8. // Poststylus(使用源码时)
    9. const poststylus = require('poststylus')
    10. webpackConfig.plugins.push(new webpack.LoaderOptionsPlugin({
    11. options: {
    12. stylus: {
    13. use: [
    14. poststylus(pxtorem({
    15. rootValue: 100,
    16. minPixelValue: 2,
    17. propWhiteList: []
    18. }))
    19. ]
    20. }
    21. }
    22. }))

    如何使配置仅作用于mand-mobile?

    配置主题和字体

    • 改变主题
    • 使用本地字体

    使用

    这是一个使用Mand Mobile组件开发而成的表单页面