【AI番外】微信小程序前后端开发

用 AI 做一个微信小程序小程序用的是 Taro + React 开发 这是一个用AI开发小程序的全过程的记录,小程序的界面样式、95%的前端代码、95%的后端代码(剩下的5%是我手动修改了一些些,但约等于全都是用AI实现了😂)都是由AI生成的,不得不说 AI 发展的实在太快了。早些时候关注我的小伙伴可能还记得之前尝试做过一个 AI 测运势的小程序,当时是用 Midjourney 生成了一些小程序上用到的配图,用 ChatGPT 生成了一些文案,界面设计、小程序前端、后端都是自己写的。 阅读详情

文章首发于微信公众号《有三AI》

【AI番外】今天说微信小程序开发,不能上线的AI,都是纸老虎

训练好一个深度学习模型之后,必须要将其部署到生产环境当中,才能产生真正的价值,为更多的用户所体验。

部署到线上现在最轻便且最方便传播的当属微信小程序了,微信小程序依托于微信,不需要下载安装即可使用,用户扫一扫或搜一下即可打开应用。

腾讯官方已经宣布微信小程序的数量超过了app,对于我们个人来说,只要准备好https服务,就可以比较方便的开发。

下面我们就讲讲微信小程序前端开发和服务端开发。

“这年头,什么都的会”

 

01 前端开发

微信小程序前端开发与网页的开发有非常多共通的技术,但是也有它独特的特点,比如微信小程序的前端工具等。这一小节从微信小程序的技术特点,工具的使用,小程序的通用目录配置等各个方面来详细讲述前端的开发流程。

1.1 小程序简介

小程序一般都指微信小程序,是嵌入到微信APP里面的一种伪原生的方式,”无需安装就可运行”,当前小程序包的上限已经扩展到了8M。

如图是微信小程序《言有三工作室》和其AI摄影菜单的主界面。

 

 

相对于微信APP,小程序有几个重要的优势,分别可以从用户和开发者的角度来看。

从用户角度来看:

(1) 使用便捷,简单方便,不需要安装额外APP,节省内存。

(2) 安全,小程序经过微信严格筛选,相比于APP,不容易存在病毒、信息泄露、诈骗等情况的出现。

从开发者角度:

(1) 降低了开发门槛,缩短了开发周期。一款成熟的APP需要适配IOS,Android两大平台,各自都有非常庞大的生态体系,而小程序只需要基于微信的生态环境开发就可以实现共用。

(2) 微信庞大的用户基数给小程序带来了流量优势,相比于APP的推广更加容易。传播方便,扫二维码即可体验。

1.2 小程序开发工具

以Mac上的小程序开发工具为例,下载链接在这里,https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

打开咱们自己的小程序,体验一下页面。

上面工具有一些重要的选项。

(1) 编译,顾名思义就是用于编译小程序代码。

(2) 扫码,用于生成二维码在手机上体验。

(3) 提交版本,用于将代码提交到后台,这样拥有体验权限的用户就可以在小程序没有正式发布之前就能体验。另外,也用于正式版本的提交与发布。

以上就是小程序常用的选项,另外在开发的过程中经常需要与后台进行交互,这时就需要在小程序开发工具和后台同时进行debug,使用起来也非常的方便。

1.3 小程序前端目录

熟悉了工具后,我们来仔细审视一下如何开发小程序。我们先看看微信小程序的项目路径。

1.工程目录

包含目录为images,pages,另包含文件app.json,app.js,app.wxss,project.config.json。

(1) image,存储小程序本地使用的一些图。一般是页面的缩略图,log日志等。这里不适合放较多的图和较大的图,因为小程序本身有大小限制,最新的标准是整个小程序所有分包大小不超过8M,单个分包/主包大小不能超过 2M。

(2) pages,包含小程序所有功能页面的配置。

(3) app.js,包含程序的主流程代码,我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量。它可以是空的,但是必须存在,它通常会包含以下函数。

onLaunch函数,用于监听小程序的初始化,全局只触发一次,因此,可以在这里加载一些默认变量。

onShow函数,用于监听小程序显示,小程序的启动,从后台重新回到前台也会触发它。顾名思义,我们常常在这里对一些图片文字进行显示。

OnHide函数,是小程序从前台到后台的触发函数。

除了这3个函数之外,我们可以在js脚本里面任意添加函数,将其注册到Object参数中,就可以用this进行访问了。通常与服务端的数据交互与手机本地的文件访问,都是另外定义函数。

小程序启动之后,在app.js定义的App实例的onLaunch回调会被执行:

App({

  onLaunch: function () {

    // 小程序启动之后 触发

  }

})

整个小程序只有一个App实例,是全部页面共享的,然后就可以进入pages目录了。

(4) app.json 是对当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部tab等,一个示例配置如下。

{

  "pages":[

    "pages/index/index",

    "pages/logs/logs"

  ],

  "window":{

    "backgroundTextStyle":"light",

    "navigationBarBackgroundColor": "#fff",

    "navigationBarTitleText": "WeChat",

    "navigationBarTextStyle":"black"

  }

}

pages用于描述当前小程序所有页面路径,这是为了让微信客户端知道当前你的小程序页面定义在哪个目录。Window定义里小程序所有页面的顶部背景颜色,文字颜色等。

(5) 工具配置 project.config.json

通常大家在使用一个工具的时候,都会针对各自喜好做一些个性化配置,例如界面颜色、编译配置等,当你换了另外一台电脑重新安装工具的时候,你还要重新配置。考虑到这点,小程序开发者工具在每个项目的根目录都会生成一个project.config.json,你在工具上做的任何配置都会写入到这个文件,当你重新安装工具或者换电脑工作时,你只要载入同一个项目的代码包,开发者工具就自动会帮你恢复到当时你开发项目时的个性化配置,其中会包括编辑器的颜色、代码上传时自动压缩等一系列选项。

2. Pages目录

pages,是我们小程序开发的主要工作目录,它包含以下文件。

js,即JavaScrip文件。

json,即项目配置文件,负责窗口颜色等。

wxml,类似HTML文件。

wxss,类似CSS文件。

这4个文件一起组成一个页面。

(1) wxss文件是css样式文件。最底层的样式,比如整个页面的背景颜色等,可以在这里配置,wxss文件可以没有。wxss具有css大部分的特性,小程序在wxss也做了一些扩充和修改。比如新增了尺寸单位,在写css样式时,开发者需要考虑到手机设备的屏幕会有不同的宽度和设备像素比,采用一些技巧来换算一些像素单位。wxss在底层支持新的尺寸单位rpx,开发者可以免去换算的烦恼,只要交给小程序底层来换算即可,由于换算采用浮点数运算,所以运算结果会和预期结果有一点点偏差。

(2) wxml文件是当前页面的配置文件,我们在这里定义整个页面中各个元素的排版,给一些控件绑定事件等,这个文件也可以没有。它和HTML非常相似,有标签、属性等构成,但是也有很多不一样的地方,比如标签名字有点不一样。写HTML的时候,经常会用到的标签是div,p,span,而小程序的wxml用的标签是view,button,text等,另外还多了一些wx:if这样的属性以及{{ }}这样的表达式,它可以把一个变量绑定到界面上,称之为数据绑定,非常有用。

(3) json文件是项目配置文件,配置一些窗口颜色等等,笔者一般在app.json中配置,page中的文件留空。

(4) js文件就是javascript页面逻辑文件。按钮的响应以及与后端的交互,都在这里处理。

1.4 小程序前端开发

下面我们开始正式开发,小程序的前端开发需要实现以下几个功能。(1)选择图片并展示。(2)提交图片到后台以及获取处理结果并展示。(3)保存相册结果与分享。

我们以有三工作室的小程序为例。

1 定义好样式文件

我们这里实现3个页面的功能,第一个是ais页面,它在小程序主菜单中添加美学评分模块。

    在ais.wxml中添加如下代码

  <view>

  <button bindtap='aestheticscore'>

    <image src='../../image/building_score.jpg'></image>

    <image src='../../image/i1.png'></image>

    <text>美学评分</text>

  </button>

  </view>

可知,在这里添加了缩略图,一个按钮,以及文本等属性,并绑定了函数aestheticscore,函数的定义如下,实现到aestheticscore页面的跳转。

  aestheticscore: function (e) {

    wx.navigateTo({

      url: '../aestheticscore/aestheticscore',

    })

  },

 

最终的结果如上图。

接下来第二步就是实现aestheticscore页面,我们先看一下整个页面的样式,如下图。

包含了几个按钮和一个图像显示框,完整的wxml文件如下

<!--pages/aestheticscore/aestheticscore.wxml-->

<view>

  <image src='../../image/background.jpg'> </image>

  <image src='../../image/logo.jpg'></image>

  <view style='text-align:center;margin:20rpx;font-weight:600; font-family: "Microsoft Yahei";'>{{title}}</view>

  <view>

    <image wx:if="{{bgPic}}" src="{{bgPic}}" mode='widthFix'></image>

    <view wx:else></view>

  </view>

  <view>

    <button data-way="camera" bind:tap="chooseImage">使用相机</button>

    <button data-way="album" bind:tap="chooseImage">相册选择</button>

    <view>

      <button bindtap='back'>返回</button>

      <button bindtap='nextPage'>下一步</button>

    </view>

  </view>

</view>

在页面的顶端包含了一个背景image,一个logo image,一个text控件,是为了显示该页面的背景,小程序的logo,以及该页面的功能名字,并且功能名字{{title}}是从js文件中获取的。

然后页面使用了一个container控件来保存所选择的图片,当有选择的图片的时候显示{{bgPic}},当没有的时候显示“emptyBg”。

最后是若干个按钮,包括“使用相机”,“相册选择”两个选择不同图片来源的按钮,返回上一级菜单的“返回”按钮以及进入下一步的“下一步”按钮。

第三个页面就是showaesthetic页面,它返回结果并显示,包含一个保存至当前目录和分享的按钮,按钮和显示图片的控件与第二个页面中的按钮的样式相同,这里多了一个显示结果,即下图美学分数“88.0495548248”的text控件,属性如下。

 <view style='text-align:center;margin:20rpx;font-weight:600; font-family: "Microsoft Yahei";'>{{text}}</view>

以上就是界面的定义,分别实现进入菜单,选择图片并上传,获取结果并展示,接下来具体实现其中的功能。

2 实现选择图片并显示的功能

直接使用微信的官方API就可以实现选择图片并显示的功能,需要使用到chooseImage接口,代码如下:

  chooseImage(from) {

    wx.chooseImage({

      count: 1,

      sizeType: ["original", "compressed"], // 可以指定是原图还是压缩图,默认二者都有

      sourceType: [from.target.dataset.way],

      // sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 

      success: (res) => {

        var tempFilePaths = res.tempFilePaths;

        this.setData({

          bgPic: res.tempFilePaths[0]

        });

        this.assignPicChoosed();

      },

      fail: (res) => {

        this.assignPicChoosed();

      },

      complete: (res) => {

        this.assignPicChoosed();

      },

    })

  },

3 实现提交图片到后台并获取返回结果的功能

同样,直接使用微信的官方API即可,用到的函数是wx.uploadFile。

//上传图片并获取结果

nextPage: function (e) {

    var that = this;

    //将选择的图片作为全局数据

    app.globalData.bgPic = that.data.bgPic;

    wx.showToast({

      title: '正在处理', icon: 'loading', duration: 100000

    });

    wx.uploadFile({

      url: 'https://yanyousan.com/aestheticscore',

      filePath: that.data.bgPic,

      name: 'file',

      header: {

        'content-type': 'multipart/form-data'

      },

      success: function (res) {

        // console.log(res.data);

        wx.hideToast();

        if (res.statusCode == 200) {

          var jj = JSON.parse(res.data);//将json字符串转为json对象

          console.log('200');

          app.globalData.aestheticscore = jj["score"];

          console.log(app.globalData.aestheticscore);              

          wx.navigateTo({

            url: '../showaestheticscore/showaestheticscore',

          })

        } else {

          wx.showModal({

            title: '提示',

            content: '服务器错误,请稍后重试!',

          });

        }

      },

      fail: function (res) {

        console.log(res);

      }

    })

  },

4 显示结果与分享

上面已经定义好了显示的样式,并且将结果绑定到了app.globalData.aestheticscore中,所以在showaesthetic只需要获取到结果,通过onload函数实现,其中调用了getImageInfo函数。

  onLoad: function (options) {

    wx.getImageInfo({

      src: app.globalData.bgPic,

      text: app.globalData.aestheticscore,

      success: res => {

        this.bgPic = res.path

        console.log(res.width)

        console.log(res.height)

        console.log(app.globalData.aestheticscore)

      }

    }),

      this.setData({

        bgPic: app.globalData.bgPic,

        text: app.globalData.aestheticscore

      })

  },

另外,这里还包括保存结果以及分享按钮,前者需要使用到saveImageToPhotosAlbum函数,后者即实现onShareAppMessage函数。

savePic() {

    wx.getImageInfo({

      src: app.globalData.bgPic,

      success: function (res) {

        var path = res.path;

        wx.saveImageToPhotosAlbum({

          filePath: path,

          success(result) {

            console.log(result)

            wx.showToast({

              title: "保存成功",

              icon: 'success',

              duration: 1000

            })

          }

        })

      }, fail(e) {

        console.log("err:" + e);

      }

    }),

    wx.navigateTo({

        url: '../ais/ais',

    })

  },

  onShareAppMessage: function () {

    return {

      title: "言有三工作室",

      path: "/pages/ais/ais",

      success: function (res) {

        // 转发成功

        console.log("转发成功:" + JSON.stringify(res));

        wx.showToast({

          title: "转发成功",

          icon: 'success',

          duration: 2000

        })

      },

      fail: function (res) {

        // 转发失败

        console.log("转发失败:" + JSON.stringify(res));

      }

    }

  }

})

前端开发的核心内容如上,主要就是定义好样式和相关的跳转逻辑。

 

02 服务端开发

上一节,我们说了微信小程序的前端开发,这一节我们就来完成服务端的开发。主要包括:(1)域名注册与证书申请。(2)Flask服务端框架介绍。(3)算法搭建与实现。

2.1 域名注册与管理

所谓域名就是我们熟知的网址了,它相比IP地址更加方便记忆,如www.yanyousan.com。域名注册有很多的渠道,国内可以到腾讯云等拥有域名服务的厂商处注册,只要选择的域名没有被注册就行。

选择域名注册的时候有一些类型,需要简单了解。

.com域名,是国际最广泛流行的通用域名格式,全球注册量超过1.1亿。.com域名一般用于商业性的机构或公司,任何人都可以注册。如果可以的话,我们尽量注册这个域名。

.cn,中国使用的顶级通用域名,这是全球唯一由中国管理的国际顶级域名。com.cn属于.cn里面的分类,其他还有net.cn,org.cn,gov.cn等。

.net是类别顶级域名,适用于各类网络提供商。

.org是非营利性机构。

.gov.cn是政府机构。

我们尽量使用.com或者.cn。

由于是微信小程序的开发,直接选择腾讯云很方便。https://cloud.tencent.com/

注册得到域名之后,下一步就是进行域名备案,大陆的域名必须通过备案才能提供服务。至于备案的具体流程,根据官网的操作进行就可以了。

备案完成之后,就可以去申请https服务了。实际上没有https,用http服务也是可以正常搭建网络访问的,但是微信小程序必须使用https协议。所以,我们需要去申请https证书。

腾讯云提供了一年的免费证书,大家可以使用。

2.2 服务端框架简介

1.Web应用程序流程

对于Web应用来说,当客户端想要获取动态资源时,就会发起一个HTTP请求,比如用浏览器访问一个URL,Web应用程序会在后台进行相应的业务处理,从数据库或者进行一些计算操作取出用户需要的数据,生成相应的HTTP响应。当然,如果访问静态资源,则直接返回资源即可,不需要进行业务处理。服务器要想对每个URL请求返回对应的结果,需要建立URL和函数之间的一一对应关系,这就是Web开发中所谓的路由分发。

客户端接到响应后,必须显示给用户看。这个时候就需要一个视图函数,它可以返回简单字符串,也可以返回复杂的表单,然后在前端渲染。

2.Flask服务端框架基础

由于对python比较熟悉,我决定使用python作为服务端的web框架语言。python的web框架,有Django,Flask,Pyramid,Tornado,Bottle,Diesel,Pecan,Falcon等等。其中Flask、Pyramid和Django,是同时适合开发小项目和大型商业项目的框架。

相对来说,Flask更适合面向需求简单的小应用,所以我们选择了Flask。

Flask是一个微型的服务端框架,它旨在保持核心的简单,但同时又易于扩展。默认情况下,Flask不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask支持用扩展来给应用添加这些功能,众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。Flask的这些特性,使得它在Web开发方面变得非常流行。

既然如此简单,那我们就先看一个程序员必写的HelloWorld,7行Python代码就够了。

# from http://flask.pocoo.org/ tutorial

from flask import Flask

app = Flask(__name__)

@app.route("/")

def hello():

    return "欢迎来到言有三工作室"

if __name__ == "__main__":

    app.run()

一个没什么Python web开发经验的人就可以很快的上手,我们看看上面都包含什么。

from flask import Flask

app = Flask(__name__)

这就是用于创建一个程序实例,__name__变量就是程序主模块的名字。

@app.route("/")

def hello():

    return "欢迎来到言有三工作室"

Flask底层使用werkzeug来做路由分发,上面的代码就是用于创建路由映射,@app.route就是程序实例提供的修饰器,它将hello函数注册为路由,而且是根地址的处理程序。所以,一旦我们打开https://yanyousan.com,就会显示该函数的结果,大家可以试试。

if __name__ == "__main__":

    app.run()

这就是主函数了,只有执行这个脚本后,才会启动开发web服务器。服务器启动后,进入轮询,等待并处理请求,直到程序停止。

更多Flask的使用,我们就不一一说明,大家可以去参照官网http://flask.pocoo.org/学习。

2.3 服务端开发

下面开始服务端的开发,主要是实现表单,路由映射功能。

1.目录划分

部署服务时,我们应该先划分一下目录结构。根目录下包含,app,models,manager.py。

manager.py是主文件入口,其中的内容如下:

from app import app

if __name__=='__main__':

    app.run(debug=True)

app中存储代码文件和其他的一些资源文件如图片,models是我们专门用来保存模型的目录,因为这些文件一般比较大,不适合放在git中托管。app中包括static,utils,以及form.py,view.py等脚本。static存储的是一些静态文件,utils下面放置我们的算法模块,所有算法相关的代码就定义在这里。

2 表单文件form.py

表单即WebForm,它负责封装用于用户端显示的数据,充当了在视图及程序之间传输、处理数据的媒介,可以通过form.get("键名")的方式来读取这些数据,也可以通过form.set("属性名",值)来改变视图中传过来的数据值。

每个Web表单都由一个继承自Form的类表示。这个类定义表单中的一组字段,每个字段都用对象表示。字段对象可附属一个或多个验证函数,它用来验证用户提交的输入值是否符合要求。

因为我们是处理图片,所以需要定义图片的表单类,看下面代码。

#coding=utf8

from flask_wtf import FlaskForm

from wtforms import FileField, SubmitField

from wtforms.validators import DataRequired

class PictureForm(FlaskForm):

    picture = FileField(

        label=u'图片',

        validators=[

            DataRequired(u'上传图片不能为空')

        ],

        render_kw={'accept': 'image/*', 'style': 'display:none', 'align': 'margin-top:10px'}

    )

    submit = SubmitField(

        u'提交',

        render_kw={'style': 'text-align: center; font-size:30px; margin-top:10px; margin-left:5px', 'align': 'center'}

    )

它包含一个picture字段和一个submit按钮。Picture字段需要验证传输的图片不能为空,即表单验证。只要存在表单元素,基本就少不了表单验证。

3. 路由映射view.py

这个脚本主要用于与前端的交互,我们看一下例子,这就是上一节我们演示的美学评分的那个例子。

#美学评分

@app.route('/aestheticscore', methods=['GET', 'POST'])

def get_aestheticscore():

    file_data = request.files['file']

    if file_data and allowed_file(file_data.filename):

        filename = secure_filename(file_data.filename)

        file_uuid = str(uuid.uuid4().hex)

        time_now = datetime.now()

        filename = time_now.strftime("%Y%m%d%H%M%S")+"_"+file_uuid+"_"+filename

        file_data.save(os.path.join(app.config['AESTHETICSCORE'], filename))

        src_path = os.path.join(app.config['AESTHETICSCORE'], filename)

        score = aestheticscore(src_path)

        if float(score) < 0:

        data = {

        "code": 0,

        "score": "请使用建筑图片"

       }

        else:

        data = {

        "code": 0,

        "score": str(score)

       }

      

        return jsonify(data)

    return jsonify({"code": 1, "msg": u"文件格式不允许"})

看上面的代码,get_aestheticscore()是创建的路由函数,它接收前端上传的图,并调用aestheticscore函数进行处理,然后返回json格式的结果。aestheticscore就是我们实现算法的主函数了,这里不在本书的讲述内容,所以不做介绍。

我们再回到前端中怎么和服务端进行交互,在前端的上传图片那里有以下代码。

wx.uploadFile({

   url: 'https://yanyousan.com/aestheticscore',

   filePath: that.data.bgPic,

   name: 'file',

   header: {

     'content-type': 'multipart/form-data'

   },

   success: function (res) {

     // console.log(res.data);

     wx.hideToast();

     if (res.statusCode == 200) {

       var jj = JSON.parse(res.data);//将json字符串转为json对象

       console.log('200');

       app.globalData.aestheticscore = jj["score"];

       console.log(app.globalData.aestheticscore);              

       wx.navigateTo({

         url: '../showaestheticscore/showaestheticscore',

       })

     } else {

       wx.showModal({

         title: '提示',

         content: '服务器错误,请稍后重试!',

       });

     }

   },

其中url: 'https://yanyousan.com/aestheticscore'就是我们上传图片的网址接口,var jj = JSON.parse(res.data)就是获取的json格式的返回结果,jj["score"]就是得到的分数。

至此,我们就完成了上传图片,后台处理并返回结果。前后端的基本技术内容到此基本结束,感谢“有三AI学院实习生杨皓博”在1.1部分的分享。

如果大家想体验我们的功能,欢迎移步摄影公众号《有三工作室》与上面的小程序平台,有很多漂亮的小姐姐等你噢。

 

更多请关注微信公众号《有三AI》与知乎《有三AI学院》。

从 0 到 1:AI 助手带你开发微信小程序 快速生成基础代码提供最佳实践建议解决技术难题优化开发体验通过AI助手的帮助,我们成功地从0到1完成了一个完整的小程序项目。这个过程不仅高效,而且充满乐趣。AI不仅是一个代码生成工具,更是一个能够帮助我们提升开发质量的智能助手。期待未来能有更多开发者享受到AI辅助开发带来的便利,一起探索更多可能性。 阅读详情

相关推荐

AI编程之-零基础开发微信小程序-UI开发

在用AI帮你做UI开发的时候,切记两点:1.认知对齐:你们要对UI各部分和组件有同样的理解和称呼。如果没有?学会提问,让AI教你。2.做好限制:AI不理解人对UI的感受,有些位置、样式差一点都不行,所以一定要做好限制。

weixin_52285994的博客 1593

【AI番外】今天说微信小程序开发,不能上线的AI,都是纸老虎

言有三毕业于中国科学院,计算机视觉方向从业者,有三工作室等创始人作者 | 言有三编辑 | 言有三训练好一个深度学习模型之后,必须要将其部署到生产环境当中,才能产生真正的价...

hacker_long的专栏 1758

如何快速开发一款AI小程序?基于微信云开发的实战指南

通过微信云开发,开发者可以快速完成从前端到后端的全栈小程序开发,借助云函数与云存储的优势,快速实现AI模型部署与调用。在实际应用中,可以使用更复杂的AI模型,并根据业务需求扩展功能。本例演示了简单的图片识别功能,借助微信云开发,让小程序开发变得更加轻松灵活。希望本文能够帮助你快速上手并完成AI小程序的开发!

一键难忘的博客 2万+

只花了几分钟,用AI开发了一个微信小程序!(附教程)

摘要:本文介绍了如何利用AI工具快速开发微信小程序。作者以"轻标记"加水印小程序为例,演示了从构思到落地的全过程:1)使用Codex等AI工具生成小程序框架;2)通过自然语言交互优化UI设计;3)完成图片上传、水印设置等核心功能。整个过程仅需简单指令即可完成代码编写和界面调整,最终实现一键添加满屏水印的功能。案例展示了AI如何将传统需要数周的开发周期缩短至几小时,极大提升了开发效率。(149字)

你好,旧时光! 7908

微信小程序前后端源码剖析与开发实战

微信小程序,作为一种新型的移动应用开发方式,通过其简便的开发流程和强大的生态系统,吸引了众多开发者和企业。它不仅降低了开发门槛,更凭借微信庞大的用户基础,为产品的推广和使用提供了得天独厚的优势。微信小程序的前端源码主要基于一套组件化的设计思想,它允许开发者以模块化的方式构建小程序的用户界面。小程序的界面主要由三种基本元素构成:WXML(WeiXin Markup Language)、WXSS(WeiXin Style Sheets)和JavaScript。

weixin_32312889的博客 1024

Windows系统下AutoDock 4.2.6安装避坑指南(附MGLTools配置技巧)

本文详细介绍了在Windows系统下安装和配置AutoDock 4.2.6的完整流程,特别针对分子对接研究中常见的软件安装问题提供了解决方案。从环境准备、分步安装到常见报错处理,涵盖MGLTools配置技巧、工作目录设置和环境变量优化,帮助科研人员快速搭建稳定的分子对接平台。

weixin_29234239的博客 313

从零到一 2小时用 AI 写一个微信小程序

回顾这次纯 AI 的开发之旅,最直观的感受就是震撼。在传统开发模式下,这样一个从需求梳理、UI 还原、逻辑编写到测试修改的小程序,起码需要 2 个礼拜的工作量;而现在,仅仅花了我 2 个小时。效率的提升不是百分之几,而是指数级的跃迁。这让我看到了未来软件行业的几个残酷又兴奋的真相:生产力被彻底解放:过去困扰我们的环境配置、语法报错、繁琐的样板代码,现在统统被 AI 接管。软件大爆发时代降临:当开发成本趋近于 0,市面上必将涌现出海量解决各种长尾需求的应用。技术壁垒被打破,想法为王。

Allen2536的博客 5958

【Linux 驱动开发】STM32MP1 LCD 显示系统完整实践指南

STM32MP1 LCD显示系统实践指南 本文全面介绍STM32MP1平台实现MIPI DSI LCD显示的完整流程,涵盖硬件连接、设备树配置、显示原理和驱动实现。主要内容包括: 硬件连接:详细说明MIPI DSI差分对、背光PWM、复位/供电管脚的连接方式 设备树配置: PWM背光控制节点设置 LTDC与DSI端口映射关系 Panel节点参数定义 显示基础:讲解LCD/OLED显示原理、常见接口类型(RGB/LVDS/MIPI/HDMI)及信号时序 驱动实现。

猫猫的小茶馆 496

JAVA 项目教程《苍穹外卖-番外篇-阿里云对象存储》,微信小程序项目,前后端分离,从开发到部署

JAVA 项目教程《苍穹外卖-番外篇-阿里云对象存储》,微信小程序项目,前后端分离,从开发到部署

道友 137

别再浪费NFC了!手把手教你用Android手机模拟门禁卡(Mifare Classic破解教程)

本文深入探讨Android NFC技术的核心原理与创新应用,教你如何利用手机模拟门禁卡(Mifare Classic破解教程),解锁智能生活的无限可能。涵盖NFC标签类型解析、HCE开发实战及安全实践,让你的Android设备成为数字生活的万能钥匙。

weixin_29239661的博客 232

TouchGFX使用教程(三)

TouchGFX使用教程(三)界面事件控件修改方法图片等资源放置位置 界面事件 控件修改方法 图片等资源放置位置

yuanzhan11的专栏 6972

小羊的暑假博客计划&教程索引

????的暑假博客计划 ????是杭州电子科技大学信息工程学院的20级学生,在学习过程中查阅资料和翻查论文的时候遇到了很多困难,发现现在的网络环境对于想学习计算机的入门者而言并不是很友好,相关教程博客太少,对有基础者更加友好。所以????决定在今年暑假开始攥写我的博客计划: 第一期 java部分、c部分、python部分 ????问了身边对编程感兴趣但还没有入手的朋友,想要了解一部分基础,但又觉得现存资料大多枯燥无趣,所以????决定带这部分朋友从最基础的部分开始,稍微讲一些编程的思维思路,可能水平不够高,

weixin_43035795的博客 457

S7-200 SMART Modbus RTU从站配置与调试实战指南

本文提供了一份详细的S7-200 SMART PLC配置为Modbus RTU从站的实战指南。内容涵盖从硬件基础、软件准备、指令库调用、核心编程到地址映射与调试排错的完整流程。重点解析了MBUS_INIT与MBUS_SLAVE指令的关键参数配置,并深入探讨了Modbus地址与PLC内部V存储区的对应关系,帮助工程师快速打通通讯链路,实现与上位机、触摸屏等主站设备的稳定数据交互。

potato的博客 756

文科生的我用DeepSeek+AI程序员半小时开发了一个小程序

作者:AI工具集有时候我突发奇想要做个小工具,但是碍于不会编程,没办法进行下去。但是学习编程要花很长时间,而且以我的水平,还不一定学得懂。我就在想,能不能通过AI生成一个网页、小程序或者App呢?经过实战手搓,发现真的可以!

阿里巴巴云原生的博客 1215

Anolis龙蜥内核升级实战:从查询到配置的全流程指南

本文提供了一份详尽的Anolis龙蜥操作系统内核升级实战指南。文章从升级的必要性出发,逐步讲解了升级前的系统检查与备份、从官方源获取正确内核包、分步安装与验证、配置默认启动项以及升级后的功能验证与安全回滚方案。旨在帮助运维人员安全、平稳地完成内核升级,以获取性能提升、新硬件支持及重要的安全漏洞修复。

qq_27496129的博客 572

Splunk CVE-2018-11409认证绕过漏洞深度解析

Splunk作为主流企业级日志分析平台,其Web管理接口的认证机制直接关系到整个安全运营体系的可信边界。CVE-2018-11409本质上是REST API路由层会话校验缺失引发的未授权访问问题,根源在于`/en-US/splunkd/__raw/`路径绕过了splunkweb与splunkd之间的信任链验证,导致配置文件、用户哈希、App源码等敏感信息明文泄露。该漏洞凸显了Web接口权限模型设计失守的风险,尤其在默认配置未加固、HTTPS未启用、初始密码未修改的生产环境中危害急剧放大。结合vulfocus

weixin_30875157的博客 599

用AI构建小程序需要多久?效果如何?

AI工具在软件开发中扮演着越来越重要的角色,它可以帮助开发者提高效率、增强软件功能、降低开发门槛。通过合理选择和应用AI工具,可以显著提升软件开发的质量和效率。

speedoooo的博客 2989

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

零代码AI助手:用大模型自动生成微信小程序界面与逻辑

本文将手把手教你搭建一个能够用大模型(如GPT、文心一言等)自动生成代码的微信小程序。用户通过自然语言描述需求,小程序调用大模型API,将描述转换为可执行的微信小程序代码(WXML、WXSS、JS),并实时渲染预览。如何创建并配置一个基础的微信小程序项目。如何集成大模型API(以OpenAI GPT为例)。如何设计一个简单的UI,让用户输入需求并展示生成的代码和预览。如何安全地将大模型返回的代码字符串动态渲染到小程序页面上。技术栈预览:微信小程序原生框架 (WXML, WXSS, JS)

alxraves的博客 498

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

AI人工智能小程序系统开发

8. 持续优化和改进:根据用户反馈和数据分析结果,不断优化和改进小程序系统的功能和用户体验。在开发过程中,需要注意选择合适的算法和模型,并进行充分的数据处理和预处理,以确保系统的准确性和稳定性。3. 数据采集和处理:收集必要的数据,并进行预处理和特征提取,为人工智能算法提供支持。4. 开发算法模型:根据需求和设计,开发相应的算法模型,如自然语言处理、图像识别等。2. 设计架构:选择合适的技术框架和人工智能算法,进行小程序系统架构的设计。6. 测试和调试:进行系统测试和调试,确保小程序系统的稳定性和准确性。

浪漫之圣 1769

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

从零到一:用AI赋能微信小程序开发的高效之路

最新接入DeepSeek-V3模型,点击下载最新版本InsCode AI IDE 从零到一:用AI赋能微信小程序开发的高效之路 在数字化时代,微信小程序已经成为企业与用户之间的重要桥梁。无论是电商、教育还是娱乐行业,小程序都以其轻量级、易传播的特点,迅速占领了市场。然而,对于许多开发者尤其是初学者来说,小程序开发仍然存在一定的门槛。传统的开发方式需要掌握复杂的编程语言和框架,耗费大量时间和精力。而...

SapphireFox89的博客 1406

在微信小程序部署AI模型的几种方法

本篇博文主要描述了在微信小程序里部署AI模型的两种方法,基于微信云开发的onnx部署和基于服务器flask框架部署,以目标检测模型为例子,提供了一些思路和关键代码,希望对大家有所帮助

supermodule的博客 7620

第一款已上线的纯AI开发的微信小程序开源了

长文翻译 小程序是一个 100% 使用AI辅助编程工具 auto-coder.chat 开发的应用。如何在微信使用这个小程序打开微信,输入搜索词:长文翻译 即可找到该小程序。点击打开:大家可以观看一段演示小视频:该项目人工手写的的代码几乎为0(不排除手欠,可能还是手动改过,所以只能用几乎)。项目地址:https://github.com/allwefantasy/long-translate如何...

allwefantasy的专栏 1662

AI 驱动开发实战:10分钟从零构建「微信群相册」小程序

AI编程助手已实现从需求分析到完整开发的突破性进展。本文记录了一个真实案例:仅用一句话需求描述,借助Cursor IDE+Claude大模型,10分钟内完成功能完整的微信小程序开发。AI自主完成了需求拆解、架构设计、核心代码实现(包括状态管理、组件化视图、图片上传等)以及符合微信规范的UI设计。测试结果表明,AI不仅能理解复杂需求,还能做出合理技术决策,如选用最新API、实现优雅降级等。这一案例证明AI编程助手已从概念验证阶段进入实际生产力阶段,正在彻底改变传统开发模式。

xinkuaile的专栏 1228

AI编程之-零基础开发微信小程序-注册与整备

我们将一步步用AI开发一个微信小程序,并发布上线。

weixin_52285994的博客 1135

AIGC赋能,微信小程序开发迎来新篇章

本书从零基础开始,系统地讲解了与微信小程序开发相关的知识点。全书按照微信小程序学习的技术路线设计章节结构,先介绍微信小程序框架,然后讲解微信小程序组件与API,最后讲解微信小程序支付、小程序商城和小程序客服。本书在进行知识讲解时,力求简单、高效、系统,使读者真正弄懂微信小程序的开发原理、使用场景和程序架构方案,并能融会贯通。同时,本书针对微信小程序开发的相关重要技术接口,出了示例程序和执行结果,以方便读者快速应用并解决问题。

程序边界 1万+
上一篇: 【技术综述】一文道尽传统图像降噪方法
下一篇: 【AI白身境】学AI必备的python基础
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值