抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

注意:html是可以替换成别的任何类名的还有就是 火狐是只能隐藏 却不能滚动 剩下两个都可以有的说这么写 ::-webkit-scrollbar{display:none} 但是完全不好使至于火狐滚动的问题 以后再想办法吧 123456789101112<style> html { /*隐藏滚动条,当IE下溢出,仍然可以滚动*/...

这个东西还真是浪费了不少时间,网上一些文章写的吧 不知道是原来版本那么做 还是以讹传讹 反正都不太好用
只能大致参考下 好了 进入整体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!--  注意这里 lay-filter 是监听时 或者其他操作时用的 选取用的字段 类似jq的 $('#id')-->
<!-- 注意这里 lay-verify 是你自定义的验证规则名称 这个是必须 如果是简单验证 就写上预设值 就好了 -->
<select name="city" lay-filter="city" lay-verify="city-verify">
<option value="010">北京</option>
<option value="021" disabled>上海(禁用效果)</option>
<option value="0571" selected>杭州</option>
</select>

<!-- 可以是submit提交按钮 也可以是普通按钮 但是呢 必须加上 lay-submit lay-filter="*" 其中 lay-submit 也是不可少的 要不就检测不到提交事件-->
<input type="submit" name="submit" lay-submit lay-filter="*" value="提交">

<script>
//第一步 写自定义规则
form.verify({
cateid: function (value) {
if (value == "") {
return "必须选择一级栏目";
}
},
contact: function (value) {
if (value.length < 4) {
return '内容请输入至少4个字符';
}
},
phone: [/^1[3|4|5|7|8]\d{9}$/, '手机必须11位,只能是数字!'],
email: [/^[a-z0-9._%-]+@([a-z0-9-]+\.)+[a-z]{2,4}$|^1[3|4|5|7|8]\d{9}$/, '邮箱格式不对']
});

//第二部 提交监听事件
//只有这样 验证才会执行 submit(*) 就是提交按钮的 lay-filter="*" 这个可以自行更改
//其实回调函数 只是有其他操作要做的时候用的 如果只是验证的话 第二个参数可以不写
form.on('submit(*)', function (data) {
params = data.field;
//alert(JSON.stringify(params))
submit($, params); //这个是提交按钮 当验证通过后就提交
return false;
})
//其实可以直接这么用
//form.on('submit(*)');
</script>

今天遇到个奇葩问题,有个js报错 结果出现位置居然在 <!DOCTYPE HTML> 这里. 真是凌乱了.找了半天,把整个页面都删除了,还是报错了. 感觉可能并不是自己的问题. 拿出火狐再看页面就没有错了. 后来发现居然是chrome的错 而且莫名的今天就坏了 前两天都没问题啊 可能他们这个插件更新 然后浏览器 自己就更新吧 总之就是插件的问题 把文件名扔到百度 根本查不出是啥...

我自己的 因为和h-ui合用 所以有点问题 一些网上的写法不奏效 12345678910111213141516171819202122232425var form = layui.form;form.on('select(cid_1)', function (data) { var cateid = $('#cateid').val(...

有时图省事 直接复制改写就会出现这个问题 所以要注意 错误原因:错误代码改成 复制粘贴害人不浅啊T_T 参考文档css文件报错Uncaught SyntaxError: Unexpected token .

下面例子是我用到的一些方法,其他的看文档吧 全的很这里主要说下怎么使用中文显示按下面引入 而且顺序不能变 还有就是注意moment引入的js 不是原版那个 12https://cdn.bootcss.com/moment.js/2.20.1/moment-with-locales.min.jshttps://cdn.bootcss.com/moment.js/2.20.1/locale/zh...

插件名 说明 sweetAlert Alert 美化插件 sweetAlert2 这是2代 效果更华丽些 layer 弹出框 这个和上面的 alert其实效果是差不多的 artDialog 这个是我好久以前就知道的,都忘记了 居然今天又看到了 tipDialog 这个居然不知道 原作者在哪里找到的 网上搜不到 也许自己写的? Simple Switch Sim...

SPA: SPA (Single-Page App) 单页面应用模式SSR: 意为 Server Side Rendering(服务端渲染)前后端都各自有自己的开发流程,构建工具,测试集合等等。前后端仅仅通过接口来编程,这个接口可能是JSON格式的RESTFul的接口,也可能是XML的,重点是后台只负责数据的提供和计算,而完全不处理展现。而前端则负责拿到数据,组织数据并展现的工作。这样结构清...

这里总结了一些开发前后端分离,对于开发API的管理.不仅可以在没有后端搭建成的时候mock数据.而且可以管理接口及版本,并生成文档.这为开发及后续整理提供很大的方便. 网站 具有的特色 DOClever 这个平台有很好的介绍用的都是视频真是太贴心了教程.而且可以管理团队,项目分配,模拟数据,测试接口,版本管理.真的是功能十分丰富,这个也可以导入Swagger,只要导出json文件...

json-server通过REST路由操作JSON文件数据库 JSONPlaceholder用于测试和原型的简单假REST API服务器。 fake-api-server跟JSONPlaceholder一样,是用于测试信息的测试服务器 ssr这个和上面的 json-server 异曲同工之妙,这不过这个既可以当作静态网站服务器,也可以提供 本地数据mock 用于测试开发 这个可以配合mock...

包名 简介 图片 multispinner 在CLI模式下进度显示程序 cfonts 在CLI模式下输出各种拼接文字,只支持英文 chalk 在CLI模式下,设置字体颜色及背景颜色 figures 在CLI模式下,输出符号 lowdb lowdb是一个基于lodash API的轻量级本地JSON数据库 (支持 Node.js , 浏览器 和 Electr...

参考文档TimelineMax系列学习文章TimelineMax:Tweening简介GSAP官方参考文档Easing缓动演示

废话先不多说,代码就是如下这么简单.

1
2
3
4
5
6
7
8
9
10
11
12
var express = require('express')
var app = express()

app.use(express.static('./dist')) //指定目录

app.get('/', function (req, res) {
//res.send('Hello World') //这里注意下因为生成的静态页不是index.html标准名称 所以不会显示
res.sendFile( path.join(__dirname, './dist/index_prod.html')) //这是返回静态页,注意啊一定要绝对路径
})

app.listen(3000)

这个东西用起来简单并且强大,不过现在可能不太流行了.因为这个配合jquery比较多.

直接随机产生数据

1
2
3
4
5
6
7
8
9
10
11
<script src="http://mockjs.com/dist/mock.js"></script>
<script>
// 使用 Mock
var data = Mock.mock({
'list|1-10': [{
'id|+1': 1
}]
});
$('<pre>').text(JSON.stringify(data, null, 4))
.appendTo('body')
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"list": [
{
"id": 1
},
{
"id": 2
},
{
"id": 3
}
]
}

简单说明

想用js开发桌面现在有两个框架可以用 Electron 另外一个是 nwjs.
但感觉还是用 Electron比较好,因为现在一些流行的软件是那这个弄的,比如说我现在用的 Atom ,VSCode 这两个软件都非常好用,而且漂亮.
另外还有个原因是,他有中文文档.这样实在是方便太多了

编写

这里主要编写个 Electron 启动配置文件.是 package.json 里的 main 字段的文件.
注意:如果 main 字段没有在 package.json 声明,Electron会优先加载 index.js。
剩下的就是编写自己的程序了就行了.

贴两个配置文件样本.
这是官方的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
const { app, BrowserWindow } = require('electron')
const path = require('path');
const url = require('url')

// 保持一个对于 window 对象的全局引用,如果你不这样做,
// 当 JavaScript 对象被垃圾回收, window 会被自动地关闭
let win

function createWindow() {
// 创建浏览器窗口。
win = new BrowserWindow({ width: 800, height: 600 })

// 加载应用的 index.html。
win.loadURL(url.format({
pathname: path.join(__dirname, 'dist/index_prod.html'),
protocol: 'file:',
slashes: true
}))
//win.loadURL('http://localhost:8080')

// 打开开发者工具。
win.webContents.openDevTools();

// 当 window 被关闭,这个事件会被触发。
win.on('closed', () => {
// 取消引用 window 对象,如果你的应用支持多窗口的话,
// 通常会把多个 window 对象存放在一个数组里面,
// 与此同时,你应该删除相应的元素。
win = null
})
}

// Electron 会在初始化后并准备
// 创建浏览器窗口时,调用这个函数。
// 部分 API 在 ready 事件触发后才能使用。
app.on('ready', createWindow)

// 当全部窗口关闭时退出。
app.on('window-all-closed', () => {
// 在 macOS 上,除非用户用 Cmd + Q 确定地退出,
// 否则绝大部分应用及其菜单栏会保持激活。
if (process.platform !== 'darwin') {
app.quit()
}
})

app.on('activate', () => {
// 在这文件,你可以续写应用剩下主进程代码。
// 也可以拆分成几个文件,然后用 require 导入。
if (win === null) {
createWindow()
}
})

// 在这文件,你可以续写应用剩下主进程代码。
// 也可以拆分成几个文件,然后用 require 导入。

CLI 方式会比Node.js Api方式简单很多.Node.js Api方式 如果配置热启动 还需要配置 webpack.HotModuleReplacementPlugin 而且有时还得安装 webpack-hot-middleware 额外的插件 还有需要特别注意的地方是 publicPath必填使用Node.js Api方式 结果还是不能自动更新.因为这个方法实在问题太多,最后还是使...

这个小插件主要解决 windows 下 无法设置 NODE_ENV=development 这个东西. 因为程序可以根据 NODE的环境变量,做出不同选择. 这个在 linux 下是可以设置的,但在 windows 下不行 安装 1npm install across-env --save-dev 使用在package.json里,需要设置环境的地方加上这句就好了 1cross-env N...

废话先不多说,代码就是如下这么简单.

1
2
3
4
5
6
7
8
9
10
11
var express = require('express')
var app = express()

app.use(express.static('./dist')) //指定目录

app.get('/', function (req, res) {
res.send('Hello World')
})

app.listen(3000)

下面这个是参考文档里的写法

1
2
3
4
5
6
7
8
9
var http = require('http');
var express = require('express');
var app = express();
app.use("/public", express.static(__dirname + '/public')); //访问路径写到一起了

// 创建服务端
http.createServer(app).listen('80', function() {
console.log('启动服务器完成');
});

然后执行 node app.js 就可以启动服务器了. app.js 就是上面配置所保存的文件名.

嗯 现在基本用法都会了,如果忘记就看下面网站吧.有点复制了.以后遇到需要提醒的再写. 哦 对了 现在快捷键已经和下面文章里写的不同了.如果想单独放大一个编辑栏,比如js的,就点右边的倒三角符号,然后能看到maxjsEditor 这个就是扩大编辑区域了.不过这个扩大了也没有jsbin用起来舒服.不过jsbin保存实在太恶心了.只是用Github的gist所以保存很烦.而且jsbin好像不能对外...

额.下面的文章写的超详细,真的不想再复制一遍了.这里就把菜单说明一下吧,因为这个总是糊涂. 保存前保存后 Save: 将当前编辑的内容保存到服务器上,方便下次调用和分享。如果你只是想测试用的话是不需要保存的。 Update: 将当前的状态保存为一个版本。类似于版本控制,会在URL后面加上一个数字。之前的版本还会存在,方便后期调试。 Fork: 把现在的项目复制到一个新的文件当中。 Base:...

一个例子 自己弄的小方块 粒子波动 参考文档three.js中文文档WebGL入门教程1 - 3D绘图基础知识 学习文章three.js实现的波浪效果WebGL学习笔记-使用3D引擎threeJS实现星空粒子移动 第一篇就画一个球体吧Three.js基础探寻四——立方体、平面与球体

魔幻线条curvejs 这个感觉实用性不强

粒子特效插件particles-自己的文章
JParticles是多个特效的一个整合

shape-shifter 用粒子组成文字
shape-shifter Demo

anime.js 动画库 其实跟上面的不同 但可以用这个做许多特效 而且例子不错

GreenSock-JS 动画库 这个动画的例子真的很棒
GreenSock-JS DEMO
TweenMax的实例
TweenMax的实例2

看来TweenMax用来做菱形这个背景应该是很拿手的 有空可以看一下

使用方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!-- 动画容器 -->
<div id="particles-js"></div>
<!-- 库引入 -->
<script src="particles.js"></script>
<!-- 配置及使用 -->
<script src="app.js"></script>

<style>

/*
这句很关键 如果不设置的话大小总会出现偏移的 不过按照官方的说应该是 #particles-js 也就是容器id 可不知道为啥是canvas类名
还有个问题就是我这个文件不知道从哪里来的,好像跟从官方复制的不一样,把Github上的复制到文件里就报错了
*/
.particles-js-canvas-el {
position: absolute;
display: block;
top: 0;
left: 0;
/*z-index:-1;*/ /*有的说这句必须加 要不会阻挡前面内容 不过我这次用的时候没出现 反而会多退后一层*/
}
</style>

注意: 如果下次样式还出现偏移,就按原来官方的试试 使用#particles-js 写样式

如何从零开始写一个 Chrome 扩展?手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单node.js 操作Cookiesnodejs怎么设置cookie?Chrome浏览器查看cookie

国外优秀图片:http://www.gettyimages.ca/ 酷站网老牌图片网http://www.zcool.com.cn/ 免费图片国外的 不错https://pixabay.com/ 超过389883 张免费照片和图片 (这次不知为啥打不开)cn.freeimages.com/ 提图网http://699pic.com/ 千图网http://www.58pic.com/ 昵图网w...

在线工具箱-大全在线工具箱开发工具箱前端网工具箱不知名网站工具箱 RGB颜色查询对照表配色网配色表快速获取网站配色和字体 大数据导航在线工具前端工具导航seeseed 图像文件在线编辑工具在线应用图标生成工具gif制作与格式互换微信小编,产品,设计师工具箱PDF制作等工具箱API在线文档站在工具箱前端工具库程序员工具箱 overapi.com 各种语言的API非常好查找有点像larv...

vue-markdown-loader vue插件 转换md文件成网页Github地址 TheaterJS 打字输入效果的插件Github地址 cooking 快速简易配置webpa 让你快速开始开发前端官方文档Github地址 Layer layer是一款近年来备受青睐的web弹层组件官方网站 SweetAlert2 强大的纯Js模态消息对话框插件 DEMO展示github地址 ...

使用 Access-Control-Max-Age 来缓存 CORS 配置使用withCredentials发送跨域请求凭据Access-Control-Allow-Origin与跨域HTTP访问控制(CORS)

大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是最喜欢Chrome的,因为它对于调试脚本及前端设计调试都有它比其它浏览器有过之而无不及的地方。可能大家对console.log会有一定的了解,心里难免会想调试的时候用alert不就行了,干嘛还要用console.log这么一长串的字符串来替代alert输出信息呢,下面我就介绍一些调试的入门技巧,让你爱上console.log

先的简单介绍一下chrome的控制台,打开chrome浏览器,按f12就可以轻松的打开控制台
This is a picture without description

Gravatar Gravatar是Globally Recognized Avatar的缩写,是gravatar推出的一项服务,意为“全球通用头像”。如果在Gravatar的服务器上放置了你自己的头像,那么在任何支持Gravatar的blog或者留言本上留言时,只要提供你与这个头像关联的email地址,就能够显示出你的Gravatar头像来 使用未被墙的地址 目前一共收集到 7 个...

这套教材非常好 非常适合我.
Webpack傻瓜式指南(一)
Webpack傻瓜指南(二)开发和部署技巧
Webpack傻瓜指南(三)和React配合开发

不过有个小问题: 里面的方法不能加括号app.appendChild(sub()); 这个应当这么写 app.appendChild(sub); 这个错误原因可能是他手误了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//之前
//只需要 sub
//这个是CommonJS风格代码
function generateText(){
var element = document.createElement('h2');
element.innerHTML = "Hello hddddaa world";
return element;
}
module.exports = generateText();

--------------------------------------------------------------------
//后面
// 所以需要sub()
//这个是ES6风格代码
export default function() {
var element = document.createElement('h2');
element.innerHTML = "Hello h2 world hahaha";
return element;
}

这次安装是按照网上教程来的 不过好像有点老了 下次尝试新的 就是不用clone npm的git 因为看到现在下载的node.js里的node_modules里 就有了这个目录了 也许直接执行命令就好了 下载node.js安装 如果没有git的话下载git安装 或者直接下载git://github.com/isaacs/npm.git 压缩包也可以 git clone –recurs...

前言JSFiddle 是一个用于前端代码展示与分享的网站,可以在这里写代码并测试,同时写完后可以用连接分享在博客里展示给大家.在国内也有个类似网站 HCODE 简单讲解 原有的标签顺序狠不好,JS文件在前显示结果在后.所以要改一下,把结果放在前面. //jsfiddle.net/elick/s03Lk51x/embedded/result,js,html,css 其实很简单,embed...

Vue Start Kit: 一个国内搞的用 Vue+Bulma UI 开发的后台模版.不过我在本地测试时报错 已经没问题了,必须用cnpm 安装node-sass才可以.
Demo地址: http://vue-kit.gismall.com/
This is a picture without description

一些总结吧

  • 父组件和子组件之间通信用广播: vue可以用多种方法实现组件间沟通,比如用一个属性,
    不过这必须用上同步 :test.sync 要不然子组件的状态父组件不知道.
    但是这有个问题就是不利于解耦,捆绑太紧密了不能复用了,所以还是用广播.
    不过还是有个小小的疑问,如果两个同名事件怎么办呢?? 按文档里说是第一个,那可能是父组件加载子组件的顺序吧
    我想可能是这样的,如果存在同名的话,那就得手动调整顺序,我感觉最好不要同名.

  • v-bind:fields=”columns” 绑定解释: 有时用简写就比较懵,简单记忆下: 如果原有属性就是绑定属性到vue属性.如果不是自带属性,那就是组件自定义的.比如 :fields="columns" 这里就是一个. fields 子组件 : columns 父组件. 反正等号后面都是当前组件的.可以看下面例子.

Atom使用纪要Atom 编辑器快捷键列表汇总整理

Vue.js: 轻量级js 数据驱动的组件,为现代化的 Web 界面而生.这类js框架都是应用比较大型功能类网站,有点类似webapp.或者单页面程序,比如我现在用的听歌浏览器插件. 他的做法是把某个功能开发成个组件,这个组件包括了模版,css,js,然后打包在一起.通过很多组件的组合,到达一个功能类网站,这样就非常的灵活了.这个主要针对pc端. 参考文档官方网站对比其它框架Vue.js:...

前言 现在框架都放弃了IE9以下的浏览器,不过中国的环境大家都知道的,没办法还是尽量满足吧. 简介禁用IE兼容模式 1234<head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge">.....

简单说明float原来一直以为float是平面的,浮动就是左右偏移在平面上运动,其实是错的,浮动是立体的,记得用火狐浏览器的debug工具,有一项就是能看到立体的样子.所以当设置浮动后,这个层的宽高就不在瘦父层级的限制了,因为他是立体的,他实际是飘在父层级上.所以需要清浮动才可以让他继续接受父层级的控制,这里就需要overflow:hidden overflow:hidden所以说 over...

前言

今天遇到个很bug的问题.在chrome里当窗口很小的时候,一个div就会偏移,但是当用鼠标调正窗口,又会变好.而且只有在chrome下有这个问题,最后确认原来是margin-top失效的原因.再次说明: 上面那个问题,并没有因使用overflow:hiden而解决.只是放在火狐里这个bug不存在了.后来是通过删除了子容器的 float:left 解决的.但到底是哪里冲突还是不明白.但下面这些方法解决一些浮动漂移是有用的.

问题的解决

正统说法:

1:“在CSS2.1中,水平的margin不会被折叠;垂直margin可能在一些盒模型中被折叠…”
2: 当第一个层浮动,而第二个没浮动层的margin会被压缩,详见–浮动元素后非浮动元素的margin的处理。

一 如果是两个容器并列,一般出现问题,是因为第一个容器加了浮动,第二个没有加 所以造成第二个margin出问题.解决办法是在第二个容器前增加一个<divstyle="clear:both;"></div>.像下面这样,或者给box2也增加float;

结合一些第三方模块构建工具,如CommonJS、RequireJS或者SeaJs,可以轻松实现代码的模块化。 也就是说 这三个工具是组合各个组件的工具,最后打包成最后代码 CommonJS 规范: 是同步加载模块AMD 规范: AMD(异步模块定义)是为浏览器环境设计的,因为 CommonJS 模块系统是同步加载的,当前浏览器环境还没有准备好同步加载模块的条件。 前言 JavaSript...

前言 在修改kod时遇到这个,不太了解作用于是查了下资料,详细看这里 JS魔法堂:从void 0 === undefined说起 简单说下 在js函数里 return void 0 表示此函数无返回. 还有就是 undefined在JavaScript中并不属于保留字/关键字,因此在IE5.5~8中我们可以将其当作变量那样对其赋值(IE9+及其他现代浏览器中赋值给undefined将无...

前言 开发时突然遇到js语句里很多逗号,一下子搞蒙了.才想起来,没有仔细研究过这个东西. 简单说明 直白的说,没有return时,返回最左边结果,有return时返回最右边结果,当return最后一个参数为void 0,将只执行操作无返回 《javascript权威指南(6版)》说逗号运算符(,):先计算左边的操作数,然后计算右边的操作数,最后返回右操作数的值。比如 var a=(1+1...

前言

现在大部分前端开发,都用npm或者bower.因为这样不仅升级组件方便,而且兼容性也能得到保障.但是对于简单开发来说,过于庞大的组件也是比较麻烦的.所以这个Sea.js还是有一定存在价值的.

我也是在KodExplorer里发现这个插件的.没有太多使用,所以这里就点一下,以便以后记住.如果需要用就看官方吧,里面文档很详细的.

[TOC]

项目地址:

https://github.com/mailru/FileAPI


前言

原本打算是操作本地文件,如打开文件,新建文件,保存文件.但好像js是无法坐到这些的.
只能通过一些特别的手段达到一定的效果而已.
这个组件就是搜索时找到的,主要是通过上传时得到文件一些信息,他主要用作图片上传,
文件上传时获得相关内容.而且他还能操作摄像头用于头像.
并且他还有个jquery的插件,主要用处也是上传头像时的相关操作.

项目主页:https://pandao.github.io/editor.md/ 先简单说两点: 可以不借助php环境使用 因为主要基于js的 但是有些插件却是必须使用php环境,比如 emoji,preformatted-text 这两个, 一个是标签 一个html图形 目前来说他只能在线编辑,却不能保存和打开文件 这个我想加上

详细内容 请参考这篇文章Bower的简单使用教程 bower init 生成 bower.json 这个是项目安装的组件包bower --save XXX 这是本项目安装组件 并记录在bower.json bowerrc文件简单说明 directory:是值第三方依赖包下载所在的位置proxy:在很多公司,为了保护公司内网的安全性,是需要配置这个代理的。所以这里一般要配置公司的代理ti...

前面碎碎念真是不搞页面,不知道弄兼容如此的恶心.当然你一板一眼的写,能避免很多的麻烦,可是利用框架,插件来做,这是烦的要死了. 这次利用了 yoesman+gulp+bower 快速搭建了个项目 其中还用到swiper插件 这个插件 3代主要面对手机 可是有些新特性 2代还没有 真是麻烦 用了3代 兼容性就有麻烦了. 基本解决问题bower里有个很好的插件 bootstrap-ie8 bo...

这篇文章 只是简单介绍 几个框架的主要作用,并不涉及详细用法. npm 老大中的老大npm 不用多说什么 这是一切基础中的基础 yeoman 快速构建项目目录其实很多项目开发的时候,目录结构及需要的插件都有一定规律.所以yeoman是解放懒人的又一利器.他的主要作用就是,当你开始一个新项目时不用自己再手动各个目录和安装那些插件,一切都为你准备好,只要一个命令 yo找到你要开发项目,接下来只需...