облачная разработка
Разработчики могут использовать облачную разработку для разработки мини-программ и мини-игр WeChat, а также использовать облачные возможности без создания сервера.
Облачная разработка предоставляет разработчикам полную облачную поддержку, ослабляет концепцию серверной части, эксплуатации и обслуживания, не требует создания сервера и использует API, предоставляемый платформой для развития основного бизнеса, для быстрого запуска и итерации. используемые услуги совместимы друг с другом, а не исключают друг друга.
похожий наБэкэнд-облако BmobилиЗнай облако
Появление облачной разработки сделало разработку небольших программ проще и удобнее, разработчикам не нужно ни покупать и строить сервер, ни беспокоиться о стабильности сервера и установке базы данных.
Открытая облачная разработка
В инструменте разработки WeChat прямо нажмите «облачная разработка», он поможет вам открыть, следует отметить, что возможность облачной разработки поддерживается базовой библиотекой 2.2.3.
После активации облачной разработки автоматически создается набор облачных сред разработки.Каждая среда изолирована друг от друга.Каждая среда содержит такие ресурсы, как независимые экземпляры базы данных, пространство для хранения и конфигурацию облачных функций. Каждая среда идентифицируется уникальным идентификатором среды, и первоначально созданная среда автоматически становится средой по умолчанию.
Есть бесплатная базовая версия
После включения облачной разработки у вас может быть до двух сред по умолчанию. В реальной разработке рекомендуется, чтобы каждая формальная среда соответствовала тестовой среде.
база данных
Облачная разработка предоставляет базу данных json (которую можно понимать как базу данных NoSQL, такую как MongoDB), которая представляет собой объект в формате json. База данных имеет несколько коллекций, которые эквивалентны таблицам в реляционной базе данных. В массиве коллекций есть несколько объектов, и каждый объект представляет собой запись, эквивалентную строке в реляционной базе данных. Работа с базой данных предоставляет множество API, которые будут объяснены позже на простых примерах.
[
{
"id": 342166,
"haspromotionTag": false,
"img": "http://p1.meituan.net/128.180/movie/740bd990e4af29d537ce324ec2cd08d6300433.jpg",
"version": "v2d imax",
"nm": "无双",
"preShow": false,
"sc": 8.9,
"globalReleased": true,
"wish": 125425,
"star": "周润发,郭富城,张静初",
"rt": "2018-09-30",
"showInfo": "今天183家影院放映2258场",
"showst": 3,
"wishst": 0
},
{
"id": 1209159,
"haspromotionTag": false,
"img": "http://p0.meituan.net/128.180/movie/4d9bedd239f41eaf08cd1c4297e4ec7d858156.jpg",
"version": "",
"nm": "找到你",
"preShow": false,
"sc": 9,
"globalReleased": true,
"wish": 66559,
"star": "姚晨,马伊琍,袁文康",
"rt": "2018-10-05",
"showInfo": "今天182家影院放映1039场",
"showst": 3,
"wishst": 0
}
]
место хранения
Базовая версия обеспечивает емкость хранилища 5G, и вы можете загружать файлы (изображения, видео...) в пространство для хранения и управлять ими в облаке. Очень удобно использовать интерфейс загрузки и выгрузки, предоставляемый непосредственно апплетом.
облачная функция
Облачные функции пишут внутренний код.В облачных функциях вы можете управлять базой данных, управлять хранилищем и завершать реализацию внутреннего кода в соответствии с вашими бизнес-потребностями. Облачные функции развернуты в облаке, но мы можем написать бэкэнд облачные функции в средствах разработки и развернуть их в облаке после завершения.Можно сказать, что вся логика находится в наборе кодов.
Мой первый апплет облачной разработки
При создании проекта облачной разработки, согласно официальному описанию, в средстве разработки WeChat есть опция QuickStart, но я обнаружил, что ее нет, может быть версия средства разработки или другие причины.
добавить данные в базу
Я скопировал некоторые данные в Maoyan Movie и подготовил их для импорта в базу данных, разработанную Mini Program Cloud.
Как видите, в консоли можно добавлять данные самостоятельно, а можно напрямую заливать в json-файл. Я решил вызвать его API здесь, чтобы импортировать данные json кошачьего глаза.
Сначала я создаю коллекцию фильмов, затем вызываю инициализированный метод
app.js
...
onLaunch: function () {
wx.cloud.init()
}
...
Для работы с базой нужно сначала получить ссылку на базу данных, а заодно получить ссылку на только что созданную мною коллекцию фильмов.Так как ее нужно вызывать на других страницах, я их все повешу на свойства приложение.
const app = getApp()
...
app.$db = wx.cloud.database()
app.$collect_movies = app.$db.collection('movies')
...
Наконец, вызовите добавленный метод
data.subjects.forEach(o => {
app.$collect_movies.add({
data: o
})
})
Теперь уже добавлены данные в базу данных облачной консоли разработки
Показать все фильмы
app.$collect_movies.where({
_openid: 'ofgUd0Rb4w8E7Af40N46ExxozS5g'
}).get({
success: function (res) {
console.log('res', res)
that.setData({
movies: res.data
})
}
})
Запросить указанный фильм по ID
app.$collect_movies.doc('W8Wf4t2AWotkhlzK').get({
success: function (res) {
console.log('res',res)
that.setData({
movie: res.data
})
}
})
Найти фильмы с оценкой 9 или более
const _ = app.$db.command
app.$collect_movies.where({
sc: _.gte(9)
}).get({
success: function (res) {
wx.hideLoading()
that.setData({
movies: res.data
})
}
})
Фильмы с оценкой 9 или выше или 0
const _ = app.$db.command
app.$collect_movies.where({
sc: _.eq(0).or(_.gte(9))
}).get({
success: function (res) {
wx.hideLoading()
that.setData({
movies: res.data
})
}
})
Изменить имя актера
# 确认修改
const that = this
app.$collect_movies.doc(this.currentMovieId).update({
data: {
star: this.data.actor
},
success: function (res) {
that.initUpdateData()
}
})
удалить фильм
# 确定删除
delAction(e) {
const that = this
const id = e.currentTarget.dataset.id
app.$collect_movies.doc(id).remove({
success: function (res) {
that.initUpdateData()
}
})
}
управление файлами
Загрузить фотографии в облачное хранилище
Попробуйте альбом для загрузки изображений в облачное хранилище апплета телефона, вы можете использовать небольшую программу, предоставленную с прямым концом API
wx.cloud.uploadFile({
cloudPath: 'example.png', // 上传至云端的路径
filePath: '', // 小程序临时文件路径
success: res => {
// 返回文件 ID
console.log(res.fileID)
},
fail: console.error
})
Если вы посмотрите на количество кода, он проще, чем загруженное в домашнее облако Tencent Tencent.Конечно, им легче управлять, чем на таких платформах, как Ali Cloud и Seven Niu Yun.
После успешной загрузки возвращается не URL-адрес изображения, а идентификатор файла. Если вы хотите отобразить изображение или воспроизвести видео, этот идентификатор файла также может быть распознан компонентом изображения/видео апплета.
<image class="movie" mode="widthFix" src="{{ fileId }}" wx:if="{{ fileId }}"> </image>
upload() {
const that = this
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success(res) {
const tempFilePaths = res.tempFilePaths
console.log(tempFilePaths[0])
wx.cloud.uploadFile({
cloudPath: 'test/2.png', // 上传至云端的路径
filePath: tempFilePaths[0], // 小程序临时文件路径
success: res => {
// 返回文件 ID
console.log(res.fileID)
that.setData({
fileId: res.fileID
})
},
fail: console.error
})
}
})
}
Скачать файл на основе идентификатора файла
downloadFile() {
wx.cloud.downloadFile({
fileID: 'cloud://ii-1853ca.6969-ii-1853ca/test/2.png',
success: res => {
// 返回临时文件路径
console.log('tempFilePath', res)
// cloud://ii-1853ca.6969-ii-1853ca/test/2.png
this.setData({
downloadFileResult: res
})
},
fail: err => {
// handle error
}
})
Обмен временной сетевой ссылкой на основе идентификатора файла
Вы можете обменять временную файловую сетевую ссылку на основе идентификатора файла, и ссылка на файл действительна в течение двух часов.
const that = this
wx.cloud.getTempFileURL({
fileList: [this.data.fileId],
success: res => {
// https://6969-ii-1853ca-1253918415.tcb.qcloud.la/test/2.png
that.setData({
fileList: res.fileList
})
},
fail: err => {
// handle error
}
})
облачная функция
Как играть?
Облачные функции работают в среде Node.js.
Сначала найдите файл конфигурации project.config.json в корневом каталоге проекта апплета, добавьте конфигурацию и укажите существующий каталог в качестве локального корневого каталога облачной функции.
"cloudfunctionRoot": "./functions/",
После указания волшебной сцены значок станет «значком облачного каталога».
Подкаталоги - это все, что я создаю новую облачную функцию через контекстное меню, где имя файла - это имя облачной функции.
Каждый раз, когда вы создаете облачную функцию, появляется всплывающее окно с вопросом, есть ли у вас среда узла.После подтверждения он автоматически открывает терминал и устанавливает зависимости, поэтому каждая облачная функция выглядит так:
В index.js по умолчанию так
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
}
Создать добавленную облачную функцию
plus/
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
// context 对象包含了此处调用的调用信息和运行状态
// event 指的是触发云函数的事件
exports.main = async (event, context) => {
return {
sum: event.a + event.b
}
}
Вызовите функцию плюсового облака на стороне апплета, и имя параметра можно будет увидеть с первого взгляда без объяснения причин.
wx.cloud.callFunction({
name: 'plus',
data: {
a: 1,
b: 2,
},
success: function (res) {
console.log('plus', res.result) // 3
},
fail: console.error
})
После звонка сообщается об ошибке, так как созданная облачная функция не загружена и не развернута в облаке.Как развернуть? см. картинку ниже
После успешного развертывания мы пришли в облачную консоль и обнаружили, что на ней уже есть облачная функция
Вернитесь к апплету, снова вызовите облачную функцию и убедитесь, что все в порядке, и получите ожидаемое значение 3.
Получить информацию о пользователе мини-программы
Уникальное преимущество облачных функций, разработанных облаком, заключается в бесшовной интеграции с аутентификацией при входе в WeChat. Когда апплет вызывает облачную функцию, входящие параметры облачной функции будут внедрены в openid пользователя апплета.Разработчику не нужно проверять правильность openid, потому что WeChat завершил эту часть аутентификации, и разработчик может напрямую использовать этот openid. Appid апплета также внедряется в облачную функцию вместе с openid.
определить облачную функцию
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
return event.userInfo
}
Вызов облачной функции
wx.cloud.callFunction({
name: 'userInfo',
success: function (res) {
console.log('userInfo', res.result)
/*
{
appId:"wx8dae61dd0ef5c510",
openId:"ofgUd0Rb4w8E7Af40N46ExxozS5g"
}
*/
},
fail: console.error
})
Асинхронные облачные функции
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(event.a + event.b)
}, 3000)
})
}
В облачных функциях мы можем ввести сторонние зависимости, которые помогут нам развиваться быстрее. Средой выполнения облачной функции является Node.js, поэтому мы можем использовать npm для установки сторонних зависимостей. Например, в дополнение к использованию собственного http-интерфейса, предоставляемого Node.js, для инициирования сетевых запросов в облачных функциях, мы также можем использовать популярный запрос библиотеки сетевых запросов Node.js для более удобной инициации сетевых запросов.
Обратите внимание, что при загрузке облачных функций зависимости не будут автоматически установлены в облаке. Разработчикам необходимо упаковать и загрузить зависимости после их локальной установки.
База данных операций облачных функций
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
// 获取电影集合数据
return db.collection('movies').get()
}
Облачные функции вызывают другие облачные функции
определить облачную функцию
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
return await cloud.callFunction({
name: 'plus',
data: {
a: 1,
b: 2,
}
})
}
вызов облачной функции
wx.cloud.callFunction({
name: 'cloudFuncCallColundFunc',
complete: res => {
console.log('cloudFuncCallColundFunc', res)
},
})
Журналы облачных функций и тесты
Вы можете увидеть журнал вызовов вызываемой облачной функции
Вы можете напрямую протестировать написанную облачную функцию, передать параметры и нажать кнопку запуска и отладки.
Резюме начального опыта облачной разработки
Облачная разработка будет публично протестирована в августе и выпущена в сентябре.Скоро ноябрь.По официальному описанию задействовано много разработчиков,чего они не ожидали.В то же время выдвинуто много жалоб и мелких программ.Это Также можно сказать, что разработка облака находится в стадии тестирования на воде, есть много ям, и в будущем оно определенно станет все более и более совершенным. Постепенно созреет, это будет очень хорошее решение, особенно для таких стартапов.