目录

  • 微信小程序入门与组件 - Day01
  • 1.内容介绍
  • 2.微信小程序简介(了解)
    • 2.1.什么是小程序
    • 2.2.微信小程序与app的区别
    • 2.3.小程序在入口
    • 2.4.微信小程序的工作原理
    • 2.5.注册小程序帐号
  • 3.小程序开发环境(重点)
    • 3.1.获取AppID
    • 3.2.下载安装开发工具
    • 3.3.创建项目
  • 4.小程序配置与结构详解(重点)
    • 4.1.认识开发工具
    • 4.2.文件结构详解
    • 4.3.创建新页面
      • 4.3.1.创建页面
      • 4.3.2.添加页面链接
      • 4.3.3.页面跳转
    • 4.4.全局配置app.json
      • 4.4.1.配置项
      • 4.4.2.窗口配置
      • 4.4.3. tabBar工具条
    • 4.5.小程序js脚本app.js
    • 4.6.页面json配置
    • 4.7.页面Js脚本文件
      • 4.7.1.绑定数据
      • 4.7.2.事件方法
  • 5.wxml页面模板语法
    • 5.1 常用的标签/组件(重点)
    • 5.2 响应式数据绑定
      • 5.2.1. 添加数据和事件:
      • 5.2.2. 添加按钮点击事件
    • 5.3 简单绑定
    • 5.4 组件属性(需要在双引号之内)
    • 5.5 if控制属性(需要在双引号之内)
    • 5.6 字符串运算
    • 5.7 对象运算
    • 5.8 数组
    • 5.9 列表渲染
    • 5.10 模板
      • 5.10.1 模板
      • 5.10.2 引用
  • 6.WXSS 样式
    • 6.1 尺寸单位
    • 6.2 WXSS引用
    • 6.3 内联样式
  • 7.事件
    • 7.1 点击事件
    • 7.2 事件类型
  • 8.课程总结
    • 8.1 重点
    • 8.2 难点
    • 8.3 如何掌握
    • 8.4 排错技巧
  • 9.课后作业
  • 10.每日一练
  • 11.面试题
  • 12.扩展知识或课外阅读推荐(可选)
    • 12.1 扩展知识
    • 12.2 课外阅读

微信小程序入门与组件 - Day01

1.内容介绍

微信小程序简介(了解)
小程序开发环境(重点)
小程序的开发配置与文件结构(重点)
组件(重点)

2.微信小程序简介(了解)

2.1.什么是小程序

微信小程序(Wechat Mini Program),简称小程序,缩写XCX,英文名mini program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。
2016年9月21日,小程序正式开启内测。2017年1月9日,小程序正式上线。全面开放申请后,主体类型为个人、企业、政府、媒体或其他组织的开发者,均可申请注册小程序。小程序、订阅号、服务号、企业号是并行的体系。

2.2.微信小程序与app的区别

微信小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。小程序定位是“轻应用”,不仅使用简单,对于创业团队来说,大大降低了开发门槛。
APP也叫移动App,外语全称:APPlication,移动应用服务,就是针对手机这种移动连接到互联网的业务或者无线网卡业务而开发的应用程序服务;简单的说就是手机或无线工具的应用服务。需要在手机上安装和升级,针对不同的手机系统需要不同的开发人员。

一个公司不想花大成本支持手机操作,就可以使用小程序或者微信公众号来实现.如果愿意花大成本就针对不同手机平台开发App.

所以现在很多公司不一定有app,但是基本都有公众号或者小程序. 当然uniapp也能解决问题,但是还不是很成熟.https://uniapp.dcloud.io/

2.3.小程序在入口

用过一次小程序以后,微信的发现栏目里面就会有,如下图(右边是小程序娱票儿的二维码,扫一扫之后,发现栏目就会出现小程序)

2.4.微信小程序的工作原理

用户在微信中打开小程序时,小程序可以通过内置的组件显示出界面,还可以通过网络API实现数据请求等功能,企业自己的数据仍然在自己的服务器上,只不过是小程序发起请求。

2.5.注册小程序帐号

小程序帐号是小程序上线的必备条件,在微信公众平台官网首页(mp.weixin.qq.com)点击右上角的“立即注册”按钮。企业和个人均可注册小程序帐号。如果只是学习使用,可以个人注册也可以使用无APPID进行开发,只不过无法进行真机测试。

填写注册信息:
https://mp.weixin.qq.com/wxopen/waregister?action=step1&token=&lang=zh_CN

激活账号

填写个人信息

注册成功

版本管理

成员管理

页面接入

秘钥管理

3.小程序开发环境(重点)

开发文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/

3.1.获取AppID

上线的项目必须有AppID,没有AppID也可以开发。
登录 https://mp.weixin.qq.com ,就可以在网站的“设置”-“开发者设置”中,查看到微信小程序的 AppID 了,注意不可直接使用服务号或订阅号的 AppID 。

3.2.下载安装开发工具

我们需要通过专用的微信开发者工具,来完成小程序创建和代码编辑。
下载地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html

3.3.创建项目

开发者工具安装完成后,打开并使用微信扫码登录。选择创建“项目”,填入上文获取到的 AppID ,设置一个本地项目的名称(非小程序名称),比如“我的第一个项目”,并选择一个本地的文件夹作为代码存储的目录,点击“新建项目”就可以了。

注意:这里建议可以先选择不使用云服务,云服务指的是小程序的一些云功能,如果使用云服务需要配置用户环境。

4.小程序配置与结构详解(重点)

4.1.认识开发工具

微信小程序开发工具不同于其它IDE,它内置了编辑器、项目管理器、调试工具等等功能。

4.2.文件结构详解

官方文档:
https://developers.weixin.qq.com/miniprogram/dev/framework/structure.html

目录结构

小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。
一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下:

文件 必需 作用
app.js 小程序js脚本
app.json 小程序公共配置
app.wxss 小程序公共样式表

在pages目录有很多的页面,一个小程序页面由四个文件组成,分别是:

文件类型 必需 作用
js 页面逻辑
json 页面配置
wxml 页面结构
wxss 页面样式表

4.3.创建新页面

4.3.1.创建页面

点中项目,右键创建文件夹,然后创建page,自动生成 4 个文件,效果如下:

4.3.2.添加页面链接

这里其实会自动添加链接的

4.3.3.页面跳转

在首页index.wxml中增加导航:

  <!-- 自定义 --><view class="uploader"><navigator url="/pages/demo/demo" open-type="navigate" class="uploader-text"><button>跳转页面</button></navigator></view>

解释:

navigator :导航器,用来做页面跳转导航
Url:跳转的页面
open-type=“navigate”:页面打开方式,可以使用 “navigate” ,但是如果页面在tabbar中引入过,那么这里就要使用switchTab。

4.4.全局配置app.json

小程序根目录下的 app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。文档:
https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html

4.4.1.配置项
属性 类型 必填 描述 最低版本
entryPagePath string 小程序默认启动首页
pages string[] 页面路径列表
window Object 全局的默认窗口表现
tabBar Object 底部 tab 栏的表现
networkTimeout Object 网络超时时间
debug boolean 是否开启 debug 模式,默认关闭
functionalPages boolean 是否启用插件功能页,默认关闭 2.1.0
subpackages Object[] 分包结构配置 1.7.3
workers string Worker 代码放置的目录 1.9.90
requiredBackgroundModes string[] 需要在后台使用的能力,如「音乐播放」
plugins Object 使用到的插件 1.9.6
preloadRule Object 分包预下载规则 2.3.0
resizable boolean PC 小程序是否支持用户任意改变窗口大小(包括最大化窗口);iPad 小程序是否支持屏幕旋转。默认关闭 2.3.0
usingComponents Object 全局自定义组件配置 开发者工具 1.02.1810190
permission Object 小程序接口权限相关设置 微信客户端 7.0.0
sitemapLocation string 指明 sitemap.json 的位置
style string 指定使用升级后的weui样式 2.8.0
useExtendedLib Object 指定需要引用的扩展库 2.2.1
entranceDeclare Object 微信消息用小程序打开 微信客户端7.0.9
darkmode boolean 小程序支持 DarkMode 2.11.0
themeLocation string 指明 theme.json 的位置,darkmode为true为必填 开发者工具 1.03.2004271
lazyCodeLoading string 配置自定义组件代码按需注入 2.11.1
singlePage Object 单页模式相关配置 2.12.0
4.4.2.窗口配置
"window": {"backgroundColor": "#F6F6F6",    窗体的背景颜色"backgroundTextStyle": "light",  窗体的文本样式"navigationBarBackgroundColor": "#F6F6F6",  导航条背景"navigationBarTitleText": "小程序开发",  导航条标题"navigationBarTextStyle": "black" 导航条文本风格},
4.4.3. tabBar工具条

在app.json加入内容

 "tabBar": {"color": "#000000","selectedColor": "#000000","backgroundColor": "#ffffff","position": "bottom","list": [{"pagePath": "pages/movie/movie","text": "电影","iconPath":"img/2.png","selectedIconPath":"img/2s.png"}, {"pagePath": "pages/movietheater/movietheater","text": "影院","iconPath":"img/3.png","selectedIconPath":"img/3s.png"},{"pagePath": "pages/home/home","text": "我的","iconPath":"img/1.png","selectedIconPath":"img/1s.png"}]},

注意:工具条对应的page要和 pages 里面配置的 page的顺序一致,如果出现错误:
VM1192:1 cloud init error: Error: invalid scope 没有权限,请先开通云服务 需要开启云开发

选择个人账户支付,免费开通

4.5.小程序js脚本app.js

App.js是小程序全局的js脚本,里面有一些公共配置

4.6.页面json配置

在每个page页面中都有个 json文件,该文件作为当前页面的配置,可以覆盖掉app.json全局配置
如修改页面标题,在页面的配置:demo.json中加入:

{"navigationBarTitleText": "自定义页面","usingComponents": {}
}

4.7.页面Js脚本文件

app.js作为全局的js脚本,
在每个page页面中都有个 js 文件,该文件作为当前页面的业务逻辑代码,并且内置了很多的事件

4.7.1.绑定数据

这里的数据绑定和VUE很像,在页面的js中的data添加数据,在页面的wxml中使用{{数据}}取值

在页面取值

4.7.2.事件方法


Page()函数用来注册一个页面。接受一个Object参数,其制定页面的初始化数据、生命周期函数、事件处理函数等。
Object参数说明
属性 类型 描述
data Object 页面的初始数据
onLoad Function 生命周期函数–监听页面加载
onReady Function 生命周期函数–监听页面初次渲染完成
onShow Function 生命周期函数–监听页面显示
onHide Function 生命周期函数–监听页面隐藏
onUnload Function 生命周期函数–监听页面卸载
onPullDownRefeash Function 页面相关处理函数–监听页面下拉动作

自定义方法:其他Any开发者可以添加任意的函数活数据到Object参数中,用this就可以访问

5.wxml页面模板语法

WXML 全称是 WeiXin Markup Language,是小程序框架设计的一套标签语言,结合小程序的基础组件、事件系统,可以构建出页面的结构。 <a class style url=”” onclick=””>
打开开发工具的编辑器,在根目录下找到 app.json 文件,双击打开,在 “pages/index/index” 上新增一行 “pages/wxml/index” 保存文件。模拟器刷新后,读者可以在编辑器中找到 pages/wxml/index.wxml 文件,本小结的学习通过修改这个文件来完成。
WXML 文件后缀名是 .wxml ,打开 pages/wxml/index.wxml 文件,有过 HTML 的开发经验的读者应该会很熟悉这种代码的书写方式,简单的 WXML语句在语法上同 HTML 非常相似。

<view><text>hello world</text>
</view>

View 相当于 div ,text 相当于span

5.1 常用的标签/组件(重点)


更多请查阅: https://mp.weixin.qq.com/debug/wxadoc/dev/component/

<view><text>数据绑定演示:</text><text>{{intro}}</text>
</view>
<view><text>小图标演示:</text><icon  type="success" size="30"></icon>
</view>
<view><text>按钮演示:</text><button class="mini-btn" type="primary" size="mini">按钮 MINI</button>
</view>
<view><text>图片演示:</text><image style="width: 200px; height: 200px; background-color: #eeeeee;" mode="scaleToFill" src="https://res.wx.qq.com/wxdoc/dist/assets/img/0.4cb08bb4.jpg"></image>
</view>
<view><text>视频演示:</text><video id="myVideo" src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400" binderror="videoErrorCallback" enable-danmu danmu-btn show-center-play-btn='{{false}}' show-play-btn="{{true}}" controls></video>
</view>

5.2 响应式数据绑定

用户界面呈现会因为当前时刻数据不同而有所不同,或者是因为用户的操作发生动态改变,这就要求程序的运行过程中,要有动态的去改变渲染界面的能力。在 Web 开发中,开发者使用 JavaScript 通过Dom 接口来完成界面的实时更新。在小程序中,使用 WXML 语言所提供的数据绑定功能,来完成此项功能。

5.2.1. 添加数据和事件:
Page({/*** 页面的初始数据*/data: {"intro":"自定义页面简介","changeData":"初始化数据"},chagneDataHandler: function(){console.log("修改内容");this.setData({changeData:"内容改变了"});},

注意:这里要用 setData才能改变数据

5.2.2. 添加按钮点击事件
<view><text>点击事件演示:</text><text>{{changeData}}</text><button  bindtap="chagneDataHandler" class="mini-btn" type="primary" size="mini">点我改变数据</button>
</view>

5.3 简单绑定

数据绑定使用 Mustache 语法(双大括号)将变量包起来,可以作用于:
修改index.wxml

<view>{{ message }}</view>

修改index.js

Page({data: {message: 'Hello MINA!'}
})

5.4 组件属性(需要在双引号之内)

<view id="item-{{id}}"></view>Page({data: {id: 0}
})

5.5 if控制属性(需要在双引号之内)

<view wx:if="{{condition}}"></view>
Page({data: {condition: true}
})

5.6 字符串运算

<view>{{"hello" + name}}</view>
Page({data: {name: 'MINA'}
})

5.7 对象运算

<view>{{object.key}} {{array[0]}}</view>
Page({data: {object: {key: 'Hello '},array: ['MINA']}
})

5.8 数组

<view wx:for="{{[zero, 1, 2, 3, 4]}}">{{item}}</view>
Page({data: {zero: 0}
})

最终组合成数组[0, 1, 2, 3, 4]。

5.9 列表渲染

在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item

<!-- array 是一个数组 -->
<view wx:for="{{array}}">{{index}}: {{item.message}}
</view><!-- 对应的脚本文件
Page({data: {array: [{message: 'foo',}, {message: 'bar'}]}
})
-->

使用 wx:for-item 指定数组当前元素的变量名,使用 wx:for-index 指定数组当前下标的变量名:

<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">{{idx}}: {{itemName.message}}
</view>

类似 block wx:if ,也可以将 wx:for 用在 标签上,以渲染一个包含多节点的结构块。例如:

<block wx:for="{{[1, 2, 3]}}"><view> {{index}}: </view><view> {{item}} </view>
</block>

5.10 模板

5.10.1 模板

WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用。使用 name 属性,作为模板的名字。然后在 内定义代码片段,如:

<template name="msgItem"><view><text> {{index}}: {{msg}} </text><text> Time: {{time}} </text></view>
</template>

使用 is 属性,声明需要的使用的模板,然后将模板所需要的 data 传入

<!-- 模板需要的数据 -->
Page({data: {item: {index: 0,msg: 'this is a template',time: '2016-09-15'}}
})

使用模板并传入参数: “…item” 传入参数到模板

<template is="msgItem" data="{{...item}}"/>

is可以动态决定具体需要渲染哪个模板,如代码2-18所示。

<template name="odd"><view> odd </view>
</template><template name="even"><view> even </view>
</template><block wx:for="{{[1, 2, 3, 4, 5]}}"><template is="{{item % 2 == 0 ? 'even' : 'odd'}}"/>
</block>
5.10.2 引用

WXML 提供两种文件引用方式import和include。
import 可以在该文件中使用目标文件定义的 template,如:
在 item.wxml 中定义了一个叫 item的 template :

<!-- item.wxml -->
<template name="item"><text>{{text}}</text>
</template>

在 index.wxml 中引用了 item.wxml,就可以使用 item模板:

<import src="item.wxml"/>
<template is="item" data="{{text: 'forbar'}}"/>

需要注意的是 import 有作用域的概念,即只会 import 目标文件中定义的 template,而不会 import 目标文件中 import 的 template,简言之就是 import 不具有递归的特性。
例如:C 引用 B,B 引用A,在C中可以使用B定义的 template,在B中可以使用A定义的 template ,但是C不能使用A定义的template ,如代码2-19、代码2-20、代码2-21所示。

<!-- A.wxml -->
<template name="A"><text> A template </text>
</template>

模板 B

<!-- B.wxml -->
<import src="a.wxml"/><template name="B"><text> B template </text>
</template>

模板 C

<!-- C.wxml -->
<import src="b.wxml"/><template is="A"/>  <!-- 这里将会触发一个警告,因为 b 中并没有定义模板 A --><template is="B"/>

include 可以将目标文件中除了 外的整个代码引入,相当于是拷贝到 include 位置,如代码2-22、代码2-23、代码2-24所示。
index.wxml

<!-- index.wxml -->
<include src="header.wxml"/>
<view> body </view>
<include src="footer.wxml"/>header.wxml
<!-- header.wxml -->
<view> header </view>footer.wxml
<!-- footer.wxml -->
<view> footer </view>

6.WXSS 样式

WXSS(WeiXin Style Sheets)是一套用于小程序的样式语言,用于描述WXML的组件样式,也就是视觉上的效果。
WXSS与Web开发中的CSS类似。为了更适合小程序开发,WXSS对CSS做了一些补充以及修改。

6.1 尺寸单位

在WXSS中,引入了rpx(responsive pixel)尺寸单位。引用新尺寸单位的目的是,适配不同宽度的屏幕,开发起来更简单。
小程序编译后,rpx会做一次px换算。换算是以375个物理像素为基准,也就是在一个宽度为375物理像素的屏幕下,1rpx = 1px。
举个例子:iPhone6屏幕宽度为375px,共750个物理像素,那么1rpx = 375 / 750 px = 0.5px。

6.2 WXSS引用

在小程序中,页面的wxml可以默认使用wxss中的样式,我们依然可以实现外部样式的引用,样式引用是这样写:在wxss中导入其他外部样式 ,在wxss文件内容的最后面引入

@import './test_0.wxss';

由于WXSS最终会被编译打包到目标文件中,用户只需要下载一次,在使用过程中不会因为样式的引用而产生多余的文件请求。

6.3 内联样式

WXSS内联样式与Web开发一致:

<!--index.wxml-->
<!--内联样式-->
<view style="color: red; font-size: 48rpx"></view>

小程序支持动态更新内联样式:

<!--index.wxml-->
<!--可动态变化的内联样式-->
<!--
{eleColor: 'red',eleFontsize: '48rpx'
}
-->
<view style="color: {{eleColor}}; font-size: {{eleFontsize}}"></view>

7.事件

7.1 点击事件

<!-- page.wxml -->
<view id="tapTest" data-xx=”{{user}}” bindtap="tapName"> Click me! </view>// page.jsPage({tapName: function(event) {console.log(event.target.dataset.xx) //取按钮的 data-xx 的值}
})

事件是通过bindtap这个属性绑定在组件上的,同时在当前页面的Page构造器中定义对应的事件处理函数tapName,当用户点击该view区域时,达到触发条件生成事件tap,该事件处理函数tapName会被执行,同时还会收到一个事件对象event。

7.2 事件类型


bindtap 等同于 bind:tap

8.课程总结

8.1 重点

1.小程序开发环境
2.配置与文件结构
3.常用组件

8.2 难点

4.配置与文件结构

8.3 如何掌握

5.查看小程序官方文档
6.多做小项目

8.4 排错技巧

7.在IDE中运行测试,看懂错误提示
8.通过错误调试的提示,看懂报错和调用栈

9.课后作业

9.制作一个电影小程序,至少要有2个页面

10.每日一练

10.使用Vue完成管理员管理,并进行数据双向绑定

11.面试题

11.你会不会做小程序?

12.扩展知识或课外阅读推荐(可选)

12.1 扩展知识

12.2 课外阅读

A095_day01_微信小程序入门与组件相关推荐

  1. 微信小程序入门ColorUI组件库使用方法

    自学入门小程序不久,在对比现在主流的组件库后,笔者我选择了ColorUI,因为ColorUI界面精美,使用方法简单,只需将ColorUI的代码片段复制到你的小程序中即可,还方便自己定制. 下面是Col ...

  2. 微信小程序入门之常用组件(04)

    常见组件 重点讲解微信小程序中常见的布局组件 view,text,rich-text,button,image,navigator,icon,swiper, radio,checkbox 等 一.vi ...

  3. 微信小程序入门二:底部导航tabBar

    小程序底部导航栏组件tabBar,可以参考下官方的API:tabBar 先看代码 //app.json {"pages":["pages/index/index" ...

  4. 微信小程序入门---01

    目录 微信小程序入门 一.小程序简介 二.第一个小程序 二.小程序代码的构成 三.WXML模块 四.WXSS 样式 五.JS 逻辑交互 六.组件 七.API 八.WXML 模板语法 - 数据绑定 九. ...

  5. 微信小程序入门教程+案例demo

    微信小程序入门教程+案例demo 尊重原创,转载请注明出处:原文查看惊喜更多 http://blog.csdn.net/qq137722697 首先摆在好姿态,--微信小程序开发也就那么回事.你只需要 ...

  6. 从零开始的微信小程序入门教程(一)

    从零开始的微信小程序入门教程(一) 之前说要和同事一起开发个微信小程序项目,现在也在界面设计,功能定位等需求上开始实施了.所以在还未正式写项目前,打算在空闲时间学习下小程序.本意是在学习过程中结合实践 ...

  7. 微信小程序 - 入门篇

    微信小程序入门 文章目录 微信小程序入门 全局配置 window配置 微信组件 微信小程序与Vue 复用性 自定义Tabbar 组件的封装 路由跳转 网络低代码 本地存储 弹窗交互 weUI 全局配置 ...

  8. 微信小程序入门教程---列表渲染多层嵌套循环及wx:key的使用(双层for循环)

    前言 入门教程之列表渲染多层嵌套循环,目前官方的文档里,主要是一维数组列表渲染的案例,还是比较简单单一,给刚入门的童鞋还是无从入手的感觉. <view wx:for="{{items} ...

  9. 【微信小程序】微信小程序入门与实战-个人笔记

    微信小程序入门与实战 文章目录 微信小程序入门与实战 1 初识微信小程序 1-1 2020版重录说明 1-2 下载小程序开发工具 1-3 新建小程序项目 1-4 小程序appid的注册 1-5 新版小 ...

最新文章

  1. 创建可微物理引擎Nimble,开源SOTA人体骨骼模型,斯坦福腿疾博士生用AI「助跑」人生...
  2. Axure中推动拉动元件不生效_单线图标元件库SVG矢量图标 纯净无干扰的Axure元件库...
  3. JAVA调用shell脚本实例
  4. NLP word2vec 计算优化
  5. Java IO流学习总结二:File
  6. Redis 是如何执行的?
  7. 【华为云技术分享】全WEB化开发体验,开发者新利器华为云CloudIDE即将揭秘
  8. 基于粒子群和麻雀搜索的LMS自适应滤波算法 - 附代码
  9. 【TSP】基于matlab遗传和模拟退火算法求解中国省会城市旅行商问题【含Matlab源码 1254期】
  10. matlab log函数
  11. 惠普136nw打印机清零_惠普136nw打印机清零_HP惠普打印机清零大全
  12. Himall商城Html文本帮助类HtmlContentHelper(2)
  13. 你连阶级固化的原因都搞不清,又凭什么不被固化在底层?
  14. 发送邮件 显示对方服务器未响应,邮件对方服务器未响应
  15. 计算机双硬盘怎么启动第二块硬盘,电脑装两个硬盘怎么设置主从盘_双硬盘设置主盘的方法...
  16. 使用Arduino开发ESP32(06):Ethernet的使用(基于LAN8720)
  17. POCO C++库学习和分析 -- 异常、错误处理、调试
  18. Vue技术栈(全家桶)
  19. layui-layer.open打开新页面进行数据处理,处理完成后数据表格重载问题
  20. 解决scrapy爬虫报错 pymongo.errors.DuplicateKeyError: E11000 duplicate key error collection

热门文章

  1. 葡萄牙晋级世界杯决赛
  2. java 高级画板_fabric.js和高级画板
  3. java中driver是什么意思_java.sql.SQLException: com.sqljdbc.Driver什么意思啊?
  4. 森宇文化全授权代理《彩虹护卫队》亮相戛纳开启动漫全产业链布局
  5. 你不必去一个遥远的星系去寻找这些奇怪的世界
  6. macOS 安装 python
  7. java前后端分离框架,SpringCloud开发微服务平台
  8. android中设置默认语言、默认时区
  9. win10系统下安装Linux系统
  10. 技术不是越来越简单,而是框架是你的羁绊