由于最近工作需求,紧急学习electron相关的技术知识,关于node.js的相关问题,后续会继续更新。
【electron】简介及作用:
electron的基本组成:Chromium + Node.js + Native API
Chromium:Google 的Chrome浏览器背后的引擎,为electron提供了强大的UI能力,不用考虑兼容性的问题,比如可以不用写很多CSS兼容代码;
Node.js:可以使用npm的包快速开发,并且使electron有底层开发的能力,比如文件的读写等;
Native API:使electron有跨平台和桌面端原生的能力
使用场景:
1、公司没有专门的桌面应用开发者,需要前端做桌面应用,比如现在苦逼的我;
2、一个项目要开发桌面端和web端,比如根据不同的权限,客户使用的端不一样;
3、要做一个效率工具,提高开发效率
具体应用举例:
VSCode(前端常用工具),Atom(github文本编辑器),slack(国外应用,得翻墙用)
【安装electron】
先安装node.js 进入官网下载node.js,LST版本是长期稳定的版本,公司开发使用;最新版本可自己练习时使用 node.js安装官网
npm install electron --save-dev (开发环境安装)
查看是否安装成功:
npx electron -v (node版本5.0以上的版本才有npx)
创建一个hello world的electron
新建H5页面:index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Hello World</title>
</head>
<body>Hello World!
</body>
</html>
创建主进程文件:main.js
const electron = require('electron') // 引入electron
const app = electron.app // 引用app
const BrowserWindow = electron.BrowserWindow // 窗口引用
const mainWindow = null // 声明要打开的主窗口
// app.on监控事件
app.on('ready', ()=> {mainWindow = new BrowserWindow({height: 800,width: 800})mainWindow.loadFile('index.html') // 要加载的html的页面(本例的index.html文件与mian.js文件为同级目录)// win.loadURL('https://github.com')mainWindow.on('closed', ()=>{ mainWindow = null})
})
使用npm init --yes 自动生成package.json文件:
最后使用命令:electron . 运行,就可以看到hello world 的窗口。
【electron的运行流程】
#mermaid-svg-5pHeofNLQey2x8AD .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-5pHeofNLQey2x8AD .label text{fill:#333}#mermaid-svg-5pHeofNLQey2x8AD .node rect,#mermaid-svg-5pHeofNLQey2x8AD .node circle,#mermaid-svg-5pHeofNLQey2x8AD .node ellipse,#mermaid-svg-5pHeofNLQey2x8AD .node polygon,#mermaid-svg-5pHeofNLQey2x8AD .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-5pHeofNLQey2x8AD .node .label{text-align:center;fill:#333}#mermaid-svg-5pHeofNLQey2x8AD .node.clickable{cursor:pointer}#mermaid-svg-5pHeofNLQey2x8AD .arrowheadPath{fill:#333}#mermaid-svg-5pHeofNLQey2x8AD .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-5pHeofNLQey2x8AD .flowchart-link{stroke:#333;fill:none}#mermaid-svg-5pHeofNLQey2x8AD .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-5pHeofNLQey2x8AD .edgeLabel rect{opacity:0.9}#mermaid-svg-5pHeofNLQey2x8AD .edgeLabel span{color:#333}#mermaid-svg-5pHeofNLQey2x8AD .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-5pHeofNLQey2x8AD .cluster text{fill:#333}#mermaid-svg-5pHeofNLQey2x8AD div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-5pHeofNLQey2x8AD .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-5pHeofNLQey2x8AD text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-5pHeofNLQey2x8AD .actor-line{stroke:grey}#mermaid-svg-5pHeofNLQey2x8AD .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-5pHeofNLQey2x8AD .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-5pHeofNLQey2x8AD #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-5pHeofNLQey2x8AD .sequenceNumber{fill:#fff}#mermaid-svg-5pHeofNLQey2x8AD #sequencenumber{fill:#333}#mermaid-svg-5pHeofNLQey2x8AD #crosshead path{fill:#333;stroke:#333}#mermaid-svg-5pHeofNLQey2x8AD .messageText{fill:#333;stroke:#333}#mermaid-svg-5pHeofNLQey2x8AD .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-5pHeofNLQey2x8AD .labelText,#mermaid-svg-5pHeofNLQey2x8AD .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-5pHeofNLQey2x8AD .loopText,#mermaid-svg-5pHeofNLQey2x8AD .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-5pHeofNLQey2x8AD .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-5pHeofNLQey2x8AD .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-5pHeofNLQey2x8AD .noteText,#mermaid-svg-5pHeofNLQey2x8AD .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-5pHeofNLQey2x8AD .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-5pHeofNLQey2x8AD .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-5pHeofNLQey2x8AD .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-5pHeofNLQey2x8AD .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5pHeofNLQey2x8AD .section{stroke:none;opacity:0.2}#mermaid-svg-5pHeofNLQey2x8AD .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-5pHeofNLQey2x8AD .section2{fill:#fff400}#mermaid-svg-5pHeofNLQey2x8AD .section1,#mermaid-svg-5pHeofNLQey2x8AD .section3{fill:#fff;opacity:0.2}#mermaid-svg-5pHeofNLQey2x8AD .sectionTitle0{fill:#333}#mermaid-svg-5pHeofNLQey2x8AD .sectionTitle1{fill:#333}#mermaid-svg-5pHeofNLQey2x8AD .sectionTitle2{fill:#333}#mermaid-svg-5pHeofNLQey2x8AD .sectionTitle3{fill:#333}#mermaid-svg-5pHeofNLQey2x8AD .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5pHeofNLQey2x8AD .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-5pHeofNLQey2x8AD .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5pHeofNLQey2x8AD .grid path{stroke-width:0}#mermaid-svg-5pHeofNLQey2x8AD .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-5pHeofNLQey2x8AD .task{stroke-width:2}#mermaid-svg-5pHeofNLQey2x8AD .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5pHeofNLQey2x8AD .taskText:not([font-size]){font-size:11px}#mermaid-svg-5pHeofNLQey2x8AD .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5pHeofNLQey2x8AD .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-5pHeofNLQey2x8AD .task.clickable{cursor:pointer}#mermaid-svg-5pHeofNLQey2x8AD .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-5pHeofNLQey2x8AD .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-5pHeofNLQey2x8AD .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-5pHeofNLQey2x8AD .taskText0,#mermaid-svg-5pHeofNLQey2x8AD .taskText1,#mermaid-svg-5pHeofNLQey2x8AD .taskText2,#mermaid-svg-5pHeofNLQey2x8AD .taskText3{fill:#fff}#mermaid-svg-5pHeofNLQey2x8AD .task0,#mermaid-svg-5pHeofNLQey2x8AD .task1,#mermaid-svg-5pHeofNLQey2x8AD .task2,#mermaid-svg-5pHeofNLQey2x8AD .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-5pHeofNLQey2x8AD .taskTextOutside0,#mermaid-svg-5pHeofNLQey2x8AD .taskTextOutside2{fill:#000}#mermaid-svg-5pHeofNLQey2x8AD .taskTextOutside1,#mermaid-svg-5pHeofNLQey2x8AD .taskTextOutside3{fill:#000}#mermaid-svg-5pHeofNLQey2x8AD .active0,#mermaid-svg-5pHeofNLQey2x8AD .active1,#mermaid-svg-5pHeofNLQey2x8AD .active2,#mermaid-svg-5pHeofNLQey2x8AD .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-5pHeofNLQey2x8AD .activeText0,#mermaid-svg-5pHeofNLQey2x8AD .activeText1,#mermaid-svg-5pHeofNLQey2x8AD .activeText2,#mermaid-svg-5pHeofNLQey2x8AD .activeText3{fill:#000 !important}#mermaid-svg-5pHeofNLQey2x8AD .done0,#mermaid-svg-5pHeofNLQey2x8AD .done1,#mermaid-svg-5pHeofNLQey2x8AD .done2,#mermaid-svg-5pHeofNLQey2x8AD .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-5pHeofNLQey2x8AD .doneText0,#mermaid-svg-5pHeofNLQey2x8AD .doneText1,#mermaid-svg-5pHeofNLQey2x8AD .doneText2,#mermaid-svg-5pHeofNLQey2x8AD .doneText3{fill:#000 !important}#mermaid-svg-5pHeofNLQey2x8AD .crit0,#mermaid-svg-5pHeofNLQey2x8AD .crit1,#mermaid-svg-5pHeofNLQey2x8AD .crit2,#mermaid-svg-5pHeofNLQey2x8AD .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-5pHeofNLQey2x8AD .activeCrit0,#mermaid-svg-5pHeofNLQey2x8AD .activeCrit1,#mermaid-svg-5pHeofNLQey2x8AD .activeCrit2,#mermaid-svg-5pHeofNLQey2x8AD .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-5pHeofNLQey2x8AD .doneCrit0,#mermaid-svg-5pHeofNLQey2x8AD .doneCrit1,#mermaid-svg-5pHeofNLQey2x8AD .doneCrit2,#mermaid-svg-5pHeofNLQey2x8AD .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-5pHeofNLQey2x8AD .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-5pHeofNLQey2x8AD .milestoneText{font-style:italic}#mermaid-svg-5pHeofNLQey2x8AD .doneCritText0,#mermaid-svg-5pHeofNLQey2x8AD .doneCritText1,#mermaid-svg-5pHeofNLQey2x8AD .doneCritText2,#mermaid-svg-5pHeofNLQey2x8AD .doneCritText3{fill:#000 !important}#mermaid-svg-5pHeofNLQey2x8AD .activeCritText0,#mermaid-svg-5pHeofNLQey2x8AD .activeCritText1,#mermaid-svg-5pHeofNLQey2x8AD .activeCritText2,#mermaid-svg-5pHeofNLQey2x8AD .activeCritText3{fill:#000 !important}#mermaid-svg-5pHeofNLQey2x8AD .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5pHeofNLQey2x8AD g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-5pHeofNLQey2x8AD g.classGroup text .title{font-weight:bolder}#mermaid-svg-5pHeofNLQey2x8AD g.clickable{cursor:pointer}#mermaid-svg-5pHeofNLQey2x8AD g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-5pHeofNLQey2x8AD g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-5pHeofNLQey2x8AD .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-5pHeofNLQey2x8AD .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-5pHeofNLQey2x8AD .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-5pHeofNLQey2x8AD .dashed-line{stroke-dasharray:3}#mermaid-svg-5pHeofNLQey2x8AD #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-5pHeofNLQey2x8AD #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-5pHeofNLQey2x8AD #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-5pHeofNLQey2x8AD #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-5pHeofNLQey2x8AD #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-5pHeofNLQey2x8AD #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-5pHeofNLQey2x8AD #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-5pHeofNLQey2x8AD #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-5pHeofNLQey2x8AD .commit-id,#mermaid-svg-5pHeofNLQey2x8AD .commit-msg,#mermaid-svg-5pHeofNLQey2x8AD .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5pHeofNLQey2x8AD .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5pHeofNLQey2x8AD .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5pHeofNLQey2x8AD g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5pHeofNLQey2x8AD g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-5pHeofNLQey2x8AD g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-5pHeofNLQey2x8AD g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-5pHeofNLQey2x8AD g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-5pHeofNLQey2x8AD g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-5pHeofNLQey2x8AD .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-5pHeofNLQey2x8AD .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-5pHeofNLQey2x8AD .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-5pHeofNLQey2x8AD .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-5pHeofNLQey2x8AD .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-5pHeofNLQey2x8AD .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-5pHeofNLQey2x8AD .edgeLabel text{fill:#333}#mermaid-svg-5pHeofNLQey2x8AD .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-5pHeofNLQey2x8AD .node circle.state-start{fill:black;stroke:black}#mermaid-svg-5pHeofNLQey2x8AD .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-5pHeofNLQey2x8AD #statediagram-barbEnd{fill:#9370db}#mermaid-svg-5pHeofNLQey2x8AD .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-5pHeofNLQey2x8AD .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-5pHeofNLQey2x8AD .statediagram-state .divider{stroke:#9370db}#mermaid-svg-5pHeofNLQey2x8AD .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-5pHeofNLQey2x8AD .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-5pHeofNLQey2x8AD .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-5pHeofNLQey2x8AD .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-5pHeofNLQey2x8AD .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-5pHeofNLQey2x8AD .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-5pHeofNLQey2x8AD .note-edge{stroke-dasharray:5}#mermaid-svg-5pHeofNLQey2x8AD .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-5pHeofNLQey2x8AD .error-icon{fill:#522}#mermaid-svg-5pHeofNLQey2x8AD .error-text{fill:#522;stroke:#522}#mermaid-svg-5pHeofNLQey2x8AD .edge-thickness-normal{stroke-width:2px}#mermaid-svg-5pHeofNLQey2x8AD .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-5pHeofNLQey2x8AD .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-5pHeofNLQey2x8AD .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-5pHeofNLQey2x8AD .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-5pHeofNLQey2x8AD .marker{fill:#333}#mermaid-svg-5pHeofNLQey2x8AD .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-5pHeofNLQey2x8AD {color: rgba(0, 0, 0, 0.75);font: ;}
Package.json
主进程文件main.js
读取页面布局和演示
IPC执行任务和获取信息
1、读取package中设置的入口文件:这里设置的时是mian.js(一个electron有且只有一个主进程,一个主进程可以有多个渲染进程)
2、main.js主进程中创建渲染进程
3、读取需要渲染的应用页面的布局和样式
4、使用IPC在主进程执行任务并获取信息
【app 控制应用程序的事件生命周期】
详细介绍app控制应用程序的事件生命周期:
先引入app
const electron = require('electron')
const app = electron.app
app.on('ready', () => {})
当 Electron 完成初始化时,发出一次。也可以通过调用 app.isReady() 来检查该事件是否已被触发,以及通过 app.whenReady() 得到一个当Electron已初始化后fulfill 的 Promise。
‘before-quit’
:在程序关闭窗口前发信号
‘activate’
:当应用被激活时触发
app.on('window-all-closed', () => { app.quit() })
最后一个窗口被关闭时退出应用。此事件默认的行为是控制退出程序,但监听此事件可以控制什么条件下是否退出程序。
【Electron】用前端技术开发桌面应用(一)相关推荐
- eclipese web前端开发教学_web前端技术开发视频教程:Javascript 从入门到精通(百度云盘资源)...
<JavaScript视频教程>这是一个帮助您系统学习JavaScript编程语言的课程,该课由浅入深的介绍JavaScript的语言特性,结合实际例子解析常见误区,启发你的思考,帮助学习 ...
- 如何使用前端技术开发一个桌面跨端应用
本文将会讲述一个完整的跨端桌面应用 代码画板 的构建,会涉及到整个软件开发流程,从开始的设计.编码.到最后产品成型.包装等. 本文不仅仅是一篇技术方面的专业文章,更会有很多产品方面的设计思想和将技术转 ...
- android开发入门与实践_Electron从入门到实践,前端开发者开发桌面App的最佳选择...
在开始之前,我想您一定会有这样的困惑:标题里的Electron 是什么?Electron能做什么?许多伟大的公司使用Electron框架的原因又是什么? 带着这些问题和疑惑,通过本文的介绍,可助您全面 ...
- Electron - 用前端的技术开发桌面应用(二)
之前已经出了Electron系列第一篇,实现了简单的Hello World,感兴趣的小伙伴可以去翻看:https://editor.csdn.net/md/?articleId=118417012今天 ...
- 刘霄前端技术开发日志
2012.02.20_需求描述 华夏银行信用卡商城前端开发 http://creditshop.hxb.com.cn/ 需求描述: 1.所有文件包括,华夏银行信用卡商城首页.频道页.注册流程.购物流程 ...
- chorme插件 ,在浏览器上模拟手机,pad 查看网页|前端技术开发必备插件
网址:http://lab.maltewassermann.com/viewport-resizer/ 使用方法: 1在chrome浏览器上方右击,显示书签栏 2 打开插件网址,将<ignore ...
- Web前端技术开发学习笔记(HTML标记语言篇)——第4章 文字与段落标记
第4章 文字与段落标记 第4章 文字与段落标记 4.1文字标记 4.1.1 文字内容的输入 1.普通文字的输入 2.空格的输入 3.特殊文字的输入 4.注释语句 4.1.2 对文字字体的设置 4.1. ...
- Web前端技术开发学习笔记(HTML标记语言篇)——第6章 图片标记
第6章 图片标记 6.1 网页常见图片格式 6.2 插入图片 6.2.1 设置图片大小 6.2.2 设置图片文本 6.2.3 设置图片与周围对象的间距 6.2.4设置图片的对齐方式 6.2.5设置图片 ...
- Web前端技术开发学习笔记(HTML标记语言篇)——第5章 列表标记
第5章 列表标记 5.1 有序列表 5.1.1 有序列表的前导符设置 5.1.2 有序列表的前导符起始编号设置 5.2 无序列表 5.2.2 项目列表的前导符设置 5.2.3 定义列表 5.3 嵌套列 ...
最新文章
- CV 方向,长期看好,短期谨慎?
- 从RocketMQ看长轮询(Long Polling)
- Mongodb数据库连接
- Map-Reduce 思想在 ABAP 编程中的一个实际应用案例
- 学生们喜欢在计算机教室上课用英语怎么说,说说学习本课的感想,并谈谈在信息技术课堂上如何体现以学生为主体,教师为主导?...
- java boxplot_java – 具有多个类别的Boxplots的JFreeChart缩放
- iis php.exe,在IIS75下使用php运行exe程序的总结
- 分布式平台下的HS(High-Security) --对称加密
- Java基础教程【第七章:包和接口】
- Wireshark使用技巧详解
- arcgis字段计算器赋值_ArcGIS中62个常用应用技巧汇总【必须收藏】
- 利用计算机来对指纹,指纹自动识别系统.doc
- 数学期望(离散型和连续型)
- 是什么限制了你的成功?
- multi_match 查询【muti_match和match区别】
- vue使用video和vue-video-player并且可实现视频铺满呦
- 深度学习三巨头之Yann LeCun(杨立昆)简介
- 丁香园php岗_丁香园面试药学新闻编辑岗位体悟
- GTID 模式 - 通过跳过事务解决主从故障
- AutoCAD.net-错误消息大全
热门文章
- 初探js特效魅力之无缝滚动
- Python去除文本中所有中英文标点符号
- i.MX6高清双屏广告机
- 如何用Nearby Service让你的游戏实现近距离联机
- Kubernetes 是如何实现资源共享的
- 百度地图 移动版lite api
- Lora远程读取200smart VW寄存器数据
- shineblink控制全彩RGB LED
- 魅族16th操作系统android,魅族16th系列 篇一:同为骁龙845,可是我们不一样,魅族16th Plus体验评测...
- python素描画_python如何将图片转换素描画