Open mowatermelon opened 5 years ago
以posts-admin
项目为例
│ .gitignore
│ app.js
│ manifest.json
│ package.json
│
├─.iceworks
│ │ scaffoldrc.json
│ │
│ └─pageTemplate
│ index.html.ejs
│
├─node_modules
├─public
│ │ favicon.png
│ │ index.html
│ │
│ └─images
│ └─icons
│ icon-128x128.png
│ icon-144x144.png
│ icon-152x152.png
│ icon-192x192.png
│ icon-384x384.png
│ icon-512x512.png
│ icon-72x72.png
│ icon-96x96.png
│
└─src
├─components
│ ├─item
│ │ index.html
│ │
│ └─title
│ index.html
│
└─pages
├─drafts
│ index.html
│
├─home
│ index.html
│
├─new
│ index.html
│
├─posts
│ index.html
│
└─settings
index.html
去rax
官网看了一波,发现和现有代码无关,不需要强制每种控件都强制依赖
决定从项目代码学习具体实现
<style>
.container {
text-align: center;
color: #666;
height: 100%;
}
</style>
<template>
<view class="container">
<item></item>
</view>
</template>
<script>
import item from '../../components/item/index';
export default {
components: {
item
},
data() {
return {
// initial data
};
},
};
</script>
html
后缀<style></style>
样式标签<template></template>
原始标签<script></script>
代码标签页面标签内部一般是由<view></view>
构成的主标签,然后再在主标签内做相关结构拼接,发现没有<div></div>
的概念,对比项目中几个页面主要用到了<image/>
,<title/>
,<text></text>
,<input/>
,<textarea/>
,<button></button>
,<swiper></swiper>
,<swiper-item></swiper-item>
,<scroll-view></scroll-view>
,<navigator></navigator>
。
注意,控件内部在<template>
内不用再添加<view>
作为根dom节点挂接。
<template>
<scroll-view style="height: 100%" :scroll-y="true" scroll-with-animation>
<navigator :url="item.url" v-for="item in items">
<view class="scroll-view-item">
<view class="itemBody">
<image class="itemIcon" :src="item.icon" />
<text>{{item.text}}</text>
</view>
<image class="arrowIcon" src="https://img.alicdn.com/tfs/TB14khkFqmWBuNjy1XaXXXCbXXa-200-200.png" />
</view>
</navigator>
</scroll-view>
</template>
<swiper></swiper>
,<swiper-item></swiper-item>
,<scroll-view></scroll-view>
,<navigator></navigator>
,可以用于swiper
和滚动容器中的效果实现。
和vue2
保持一致,不做赘述
大部分和vue2
保持一致,但是在vue2
中在做export
的时候需要指定组件的组件名,但是这边不需要,不管是页面还是组件,都是直接export default
。
https://alibaba.github.io/rax/ 现有官网
前端开发的同学一直走在探索的路上,无论是从成熟的 jQuery
体系,还是 React
和 React Native
的尝试,我们一直走在拓展的边界。 但是,不可否认的是,性能、兼容、效率、体验问题始终围绕在我们身边,一直在突破却还依然没有跨越。
Rax
是一个全新的思路。它是一个通用的跨容器的渲染引擎, 如果你使用过 React
, 那么你就已经知道了该如何使用 Rax , 因为它们的 API 是完全兼容的。
Rax 的诞生,主要还是为阿里巴巴广泛的业务来服务的。现在,我们让它走向开源,服务更多的开发者。
还记得 React Native
的口号:
Learn once, write anywhere.
但对于我们来说,或许这还不够。真正的释放我们的劳动力,才是 Rax
要做的事情。 Rax
旨在
Write once, run everywhere.
我们只要开发一次,便不用再担心各个平台的兼容。
现在,就让我们 开始学习 Rax
吧。
并没有什么关系,心痛。
manifest.json
{
"name": "miniapp",
"short_name": "App",
"icons": [
{
"src": "/images/icons/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/images/icons/icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"start_url": "./index.html",
"display": "standalone",
"theme_color": "#3080fe",
"background_color": "#f4f4f4",
"manifest_version": 1,
"pages": {
"home": "src/pages/home/index",
"new": "src/pages/new/index",
"drafts": "src/pages/drafts/index",
"posts": "src/pages/posts/index",
"settings": "src/pages/settings/index"
},
"homepage": "home",
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#ff5000",
"navigationBarTitleText": "小程序",
"navigationBarTextStyle": "black"
},
"tabBar": {
"color": "#515151",
"selectedColor": "#8742fa",
"backgroundColor": "#ffffff",
"borderStyle": "#999999",
"position": "bottom",
"list": [
{
"pageName": "home",
"text": "首页",
"iconPath": "https://gw.alicdn.com/tfs/TB1IwQbFhGYBuNjy0FnXXX5lpXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1IwQbFhGYBuNjy0FnXXX5lpXa-200-200.png"
},
{
"pageName": "drafts",
"text": "草稿箱",
"iconPath": "https://gw.alicdn.com/tfs/TB1IJqYFkyWBuNjy0FpXXassXXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1IJqYFkyWBuNjy0FpXXassXXa-200-200.png"
},
{
"pageName": "posts",
"text": "文章",
"iconPath": "https://gw.alicdn.com/tfs/TB1k.O8FeuSBuNjy1XcXXcYjFXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1k.O8FeuSBuNjy1XcXXcYjFXa-200-200.png"
},
{
"pageName": "settings",
"text": "设置",
"iconPath": "https://gw.alicdn.com/tfs/TB1DJXBFDtYBeNjy1XdXXXXyVXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1DJXBFDtYBeNjy1XdXXXXyVXa-200-200.png"
}
]
}
}
manifest.json
{
"name": "miniapp",
"short_name": "App",
"icons": [
{
"src": "/images/icons/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/images/icons/icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"start_url": "./index.html",
"display": "standalone",
"theme_color": "#3080fe",
"background_color": "#f4f4f4",
"manifest_version": 1,
"pages": {
"home": "src/pages/home/index",
"new": "src/pages/new/index",
"drafts": "src/pages/drafts/index",
"posts": "src/pages/posts/index",
"settings": "src/pages/settings/index",
"test": "src/pages/test/index"
},
"homepage": "home",
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#ff5000",
"navigationBarTitleText": "小程序",
"navigationBarTextStyle": "black"
},
"tabBar": {
"color": "#515151",
"selectedColor": "#8742fa",
"backgroundColor": "#ffffff",
"borderStyle": "#999999",
"position": "bottom",
"list": [
{
"pageName": "home",
"text": "首页",
"iconPath": "https://gw.alicdn.com/tfs/TB1IwQbFhGYBuNjy0FnXXX5lpXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1IwQbFhGYBuNjy0FnXXX5lpXa-200-200.png"
},
{
"pageName": "drafts",
"text": "草稿箱",
"iconPath": "https://gw.alicdn.com/tfs/TB1IJqYFkyWBuNjy0FpXXassXXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1IJqYFkyWBuNjy0FpXXassXXa-200-200.png"
},
{
"pageName": "posts",
"text": "文章",
"iconPath": "https://gw.alicdn.com/tfs/TB1k.O8FeuSBuNjy1XcXXcYjFXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1k.O8FeuSBuNjy1XcXXcYjFXa-200-200.png"
},
{
"pageName": "settings",
"text": "设置",
"iconPath": "https://gw.alicdn.com/tfs/TB1DJXBFDtYBeNjy1XdXXXXyVXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1DJXBFDtYBeNjy1XdXXXXyVXa-200-200.png"
}
]
}
}
主要就是page
下新增了一个分支,"test": "src/pages/test/index"
"tabBar": {
"color": "#515151",
"selectedColor": "#8742fa",
"backgroundColor": "#ffffff",
"borderStyle": "#999999",
"position": "bottom",
"list": [
{
"pageName": "home",
"text": "首页",
"iconPath": "https://gw.alicdn.com/tfs/TB1IwQbFhGYBuNjy0FnXXX5lpXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1IwQbFhGYBuNjy0FnXXX5lpXa-200-200.png"
},
{
"pageName": "drafts",
"text": "草稿箱",
"iconPath": "https://gw.alicdn.com/tfs/TB1IJqYFkyWBuNjy0FpXXassXXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1IJqYFkyWBuNjy0FpXXassXXa-200-200.png"
},
{
"pageName": "posts",
"text": "文章",
"iconPath": "https://gw.alicdn.com/tfs/TB1k.O8FeuSBuNjy1XcXXcYjFXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1k.O8FeuSBuNjy1XcXXcYjFXa-200-200.png"
},
{
"pageName": "settings",
"text": "设置",
"iconPath": "https://gw.alicdn.com/tfs/TB1DJXBFDtYBeNjy1XdXXXXyVXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1DJXBFDtYBeNjy1XdXXXXyVXa-200-200.png"
}
]
}
设置
tab后 "tabBar": {
"color": "#515151",
"selectedColor": "#8742fa",
"backgroundColor": "#ffffff",
"borderStyle": "#999999",
"position": "bottom",
"list": [
{
"pageName": "home",
"text": "首页",
"iconPath": "https://gw.alicdn.com/tfs/TB1IwQbFhGYBuNjy0FnXXX5lpXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1IwQbFhGYBuNjy0FnXXX5lpXa-200-200.png"
},
{
"pageName": "drafts",
"text": "草稿箱",
"iconPath": "https://gw.alicdn.com/tfs/TB1IJqYFkyWBuNjy0FpXXassXXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1IJqYFkyWBuNjy0FpXXassXXa-200-200.png"
},
{
"pageName": "posts",
"text": "文章",
"iconPath": "https://gw.alicdn.com/tfs/TB1k.O8FeuSBuNjy1XcXXcYjFXa-200-200.png",
"selectedIconPath": "https://gw.alicdn.com/tfs/TB1k.O8FeuSBuNjy1XcXXcYjFXa-200-200.png"
}
]
}
我一直以为manifest.json
只是用作当网络状况不好或者离线清空下,被动被浏览器读取的文件,没想到可以这样玩,页面绘制逻辑严重依赖于manifest.json
。
官网 https://docs.alipay.com/mini
支付宝小程序是手机应用嵌入支付宝客户端的一种方法,有以下特点:
感觉关系还是不大,我还是直接看现有项目代码吧
主页面设计
领奖页面 设计