符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
Uniapp目前比较成熟,而且用的是Vue语法,学习成本比较低,而且行业里面用的也比较广泛,而Flutter的话,学习成本略高,因为要学习新的语言,还有就是目前生态不是特别完备,等他再发展发展吧。黑马程序员官网有成套免费视频哦,有什么不懂的可以直接过去学习。您的采纳是对我成长的鞭策
我们提供的服务有:成都网站设计、成都网站制作、微信公众号开发、网站优化、网站认证、龙陵ssl等。为上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的龙陵网站制作公司
自学前端其实很辛苦,需要有强大的自制力和坚持下去的学习心,并且做好详细的学习规划严格执行;如果你想学前端,下面的学习路线或许对你有帮助。
前端完整学习路线
第一阶段:
HTML CSS:HTML进阶、CSS进阶、div css布局、HTML css整站开发。
JavaScript基础:Js基础教程、js内置对象常用方法、常见DOM树操作大全、ECMAscript、DOM、BOM、定时器和焦点图。
JS基本特效:常见特效、例如:tab、导航、整页滚动、轮播图、JS制作幻灯片、弹出层、手风琴菜单、瀑布流布局、滚动事件、滚差视图。
JS高级特征:正则表达式、排序算法、递归算法、闭包、函数节流、作用域链、基于距离运动框架、面向对象基础。
JQuery:基础使用悬着器、DOM操作、特效和动画、方法链、拖拽、变形、JQueryUI组件基本使用。
第二阶段:HTML5和移动Web开发
HTML5:HTML5新语义标签、HTML5表单、音频和视频、离线和本地存储、SVG、Web Socket、Canvas。
CSS3:CSS3新选择器、伪元素、脸色表示法、边框、阴影、background系列属性改变、Transition、动画、景深和深透、3D效果制作、Velocity.js框架、元素进场、出场策略、炫酷CSS3网页制作。
Bootstrap:响应式概念、媒体查询、响应式网站制作、删格系统、删格系统原理、Bootstrap常用模板、LESS和SASS。
移动Web开发:跨终端WEB和主流设备简介、视口、流式布局、弹性盒子、rem、移动终端JavaScript事件、手机中常见JS效果制作、Zepto.js、手机聚划算页面、手机滚屏。
第三阶段:HTTP服务和AJAX编程
WEB服务器基础:服务器基础知识、Apache服务器和其他WEB服务器介绍、Apache服务器搭建、HTTP介绍。
PHP基础:PHP基础语法、使用PHP处理简单的GET或者POST请求。
AJAX上篇:Ajax简介和异步的概念、Ajax框架的封装、XMLHttpRequest对象详细介绍方法、兼容性处理方法、Ajax框架的封装、Ajax中缓存问题、XML介绍和使用。
AJAX下篇:JSON和JSON解析、数据绑定和模板技术、JSONP、跨域技术、图片预读取和lazy-load技术、JQuery框架中的AjaxAPI、使用Ajax实现爆布流案例额。
第四阶段:面向对象进阶
面向对象终极篇:从内存角度到理解JS面向对象、基本类型、复杂类型、原型链、ES6中的面向对象、属性读写权限、设置器、访问器。
面向对象三大特征:继承性、多态性、封装性、接口。
设计模式:面向对象编程思维、单例模式、工厂模式、策略模式、观察者模式、模板方法模式、代理模式、装饰者模式、适配器模式、面向切面编程。
第五阶段:封装一个属于自己的框架
框架封装基础:事件流、冒泡、捕获、事件对象、事件框架、选择框架。
框架封装中级:运动原理、单物体运动框架、多物体运动框架、运动框架面向对象封装。
框架封装高级和补充:JQuery框架雏形、可扩展性、模块化、封装属于传智自己的框架。
第六阶段:模块化组件开发
面向组件编程:面向组件编程的方式、面向组件编程的实现原理、面向组件编程实战、基于组件化思想开发网站应用程序。
面向模块编程:AMD设计规范、CMD设计规范、RequireJS,LoadJS、淘宝的SeaJS。
第七阶段:主流的流行框架
Web开发工作流:GIT/SVN、Yeoman脚手架、NPMer依赖管理工具、Grunt/Gulp/Webpack。
MVC/MVVM/MVW框架:Angular.js、Backbone.js、Knockout/Ember。
常用库:React.js、Vue.js、Zepto.js。
第八阶段:HTML5原生移动应用开发
Cordova:WebApp/NativeApp/HybirdApp简介、Cordova简介、与PhoneGap之间的关系、开发环境搭建、Cordova实战(创建项目,配置,编译,调试,部署发布)。
Ionic:Ionic简介和同类对比、模板项目解析、常见组件及使用、结合Angular构建APP、常见效果(下拉刷新,上拉加载,侧滑导航,选项卡)。
React Native:React Native简介、React Native环境配置、创建项目,配置,编译,调试,部署发布、原生模块和UI组件、原生常用API。
HTML5 :HTML5 中国产业联盟、HTML5 Plus Runtime环境、HBuilder开发工具、MUI框架、H5 开发和部署。
第九阶段: Node.js全栈开发:
快速入门:Node.js发展、生态圈、Io.js、Linux/Windows/OS X环境配置、REPL环境和控制台程序、异步编程,非阻塞I/O、模块概念,模块管理工具、开发流程,调试,测试。
核心模块和对象:全局对象global,process,console,util、事件驱动,事件发射器、加密解密,路径操做。
祝你学有所成!
1. 求英语表达的美丽句子
1.One is always on a strange road, watching strange scenery and listening to strange music. Then one day, you will find that the things you try hard to forget are already gone.
人总是走在陌生的路上,看着陌生的风景,听着陌生的音乐。然后有一天,你会发现你曾经努力去遗忘的东西早已变为过眼云烟。
2.Happiness is not about being immortal nor having food or rights in one's hand. It's about having each tiny wish come true, or having something to eat when you are hungry or having someone's love when you need love.
幸福并非是长生不老、有食裹腹、有权在握。幸福的意义在于:每一个微小的心愿都能实现,饥饿时有食物,想爱时便能爱。
3.Love is a lamp, while friendship is the shadow. When the lamp is off,you will find the shadow everywhere. Friend is who can give you strength at last.
爱情是灯,友情是影子,当灯灭了,你会发现你的周围都是影子。朋友,是在最后可以给你力量的人。
4.I love you not for who you are, but for who I am with you.
我爱你不是因为你是谁,而是和你在一起时我会是谁。
5.Love makes man grow up or sink down.
爱情要么让人成熟,要么让人堕落。
6.If you can hold something up and put it down, it is called weight-lifting; if you can hold something up but can never put it down,it's called burden-bearing. It is a pity, most of people are bearing heavy burdens when they are in love.
拿得起放得下,是举重;拿得起放不下,是负担。很遗憾,很多恋爱中的人负着沉重的担。
7.We take a minute to know someone, one hour to like someone, and one day to love someone, but the whole life to forget someone.
认识一个人只要一分钟,喜欢上一个人只要一小时,爱上一个人也不过一天时间,但是忘记一个人却需要一生。
8.One may fall in love with many people during the life time. When you finally get your own happiness, you will understand the previous sadness is kind of treasure, which makes you better to hold and cherish the people you love.
一个人一生中可能会爱上很多人,但是当你找到自己的幸福时,你会发现之前的种种悲伤都是宝藏,会让你更好地珍惜你爱的人。
9.When you are young, you may want several love experiences. But as time goes on, you will realize that if you really love someone, the whole life will not be enough. You need time to know, to forgive and to love.
年幼时,你可能渴望多段感情经历。但是随着年龄渐长,你会意识到当你真正爱一个人时,一辈子的时间都不够用来爱她,因为你需要时间去了解、去原谅、去深爱。
2. 描写风景英语句子
描写风景的英文句子:
The trees, like the longings of the earth, stand atiptoe to peep at the heaven.
群树如表示大地的愿望似的,踮起脚来向天空窥望。
The fish in the water is silent, the animal on the earth is noisy, the bird in the air is singing. But Man has in him the silence of the sea, the noise of the earth and the music of the air.
水里的游鱼是沉默的,陆地上的兽类是喧闹的,空中的飞鸟是歌唱着的。但是,人类却兼有海里的沉默,地上的喧闹与空中的音乐。
The world rushes on over the strings of the lingering heart making the music of sadness。
世界在踌躇之心的琴弦上跑过去,奏出忧郁的乐声。
spring is a lot of rain,summer is hot,autumn is the best season in a year,it is cool and busy ,winter is cold and sonetimes snowy.
春天是多雨的,夏天是炎热的,秋天是一年中最好的季节,它很凉爽而且忙碌,冬天是寒冷的,有时会下雪。
3. 表示“唯美”的英文短句有哪些
1. A successful relationship requires fall in love many times, always with the the same person.
一段成功的恋情,就是一次次与同一个人,堕入爱河。
2. A good laugh and a long sleep are the best cures in the doctor's book.
医生手册写道:开怀大笑,睡个好觉,此乃灵丹妙药。
3. A smile is the most charming part of a person forever.
微笑永远是一个人身上最好看的东西。
4. A person who truly loves you will never let you go, no matter how hard the situation is.
真心爱你的人永远不会放你走,不管遇到多大的困境。
5. Age wrinkles the body. Quitting wrinkles the soul.
岁月使皮肤起皱,放弃使灵魂起皱。
6. A woman who truly loves you will be angry at you for many things, but will stick around.
如果一个女人真的爱你,她会因为很多事情对你发脾气,却始终坚守在你身边。
7. Anyone can make you smile. Many people can make you cry. But it takes someone really special to make you smile with tears in your eyes.
谁都能让你笑,许多人能让你哭,但只有那个特别的人,能让你在眼中含泪的时候,依然能笑得出来。
8. A girl needs to wear two things to look great : Confidence and Smile !
随身带着这两样东西的女生看起来都会很棒:自信和微笑!
9. Actully love can be expressed in many ways,your way is one of them.Sometimes it's not that he doesn't love you anymore,but you didn't understand his way of love.
其实爱有多种方式,你的方式只是一种。有时候不是对方不爱你,而是你没有理解他爱你的方式。
10. All or nothing, now or never 。
要么没有,要么全部。要么现在,要么永不。
4. 用英文形容女子美丽的语句
如何用英语形容“魅惑女人”
男人爱潇洒,女人爱漂亮。美女不但可以让人赏心悦目,还有巨大的社会价值和经济价值。不管什么活动,加上美女,总能吸引更多的目光。美女推销也总能赚得更多的钱财入账。那么男人心目中的美女到底是什么样的呢?看看下面这些形容女人的语言,你就知道了。
下面这些表达都是形容女人漂亮,曲线玲珑,身材曼妙,野性性感的。
1. to be a beauty queen;
在人们的观念中,皇后/女王应该是女人中最高级别的,不管是在权力层面还是在美貌层面,于是有了这个 beauty queen:
She is a beauty queen.(= very beautiful)
2. to be a dream boat
Dream 是“理想的”这没假,但 dream boat 为何会成为“理想的女人”就不得而知了。有一种说法是,理想的伴侣会带你渡过人生的美好时光,就像一艘小舟带你去美好的地方旅行一样,很浪漫有情调的说法哦!当然,dream boat 也可以指“理想的男人”。我们来看个例子:
She is a dream boat.(= ideal type of woman)
3. to be a cutie; to be a babe
Cutie 和 babe 都是指“漂亮迷人”的女人,具体怎么个漂亮迷人法,我想不同的人会有不同的见解吧:
She is a cutie.(= pretty and attractive)
She is a babe.(= very beautiful and attractive)
4. to be a fox.
我们汉语里常把美丽而有魅惑力的女子为“狐狸精”,因为人们认为她们是狐狸精变成的。英语中也用 fox 来比喻那些“美丽性感”的女人,可见,世界上的语言还是多有相通之处的:
She is a fox.(= She is a foxy lady = She is sexy.)
注意,如果说:She is as sneaky(或 cunning)as a fox. 则是指“她像狐狸一样的狡猾”。
假如女人能使男人拜倒她的石榴裙下或神魂颠倒那么就可以说:
Her beauty (attraction) has caused his knees to shake / to quiver.(她的漂亮迷人使他膝部发抖)。或
She made him feel up there in the clouds. (= on clouds nine = on the top of the world)(她使他神魂颠倒,飘飘如仙。)
其实,所谓“情人眼里出西施(Beauty is in the eyes of beholder)”,世上的美或丑,只是主观的看法而已。
5. 写一句唯美的英文句子
Waiting is painful. Forgetting is painful.
But not knowing which to do is the worst kind of suffering.
等待是痛苦的,遗忘也是痛苦的。但不知该等待还是该遗忘是最痛苦的折磨。
To the world you may be one person, but to one person you may be the world.
对于世界而言,你是一个人;但是对于某个人,你是他的整个世界.
Don't cry because it is over, smile,because it happened.
不要因为结束而哭泣.微笑吧,为你的曾经拥有.
Follow your heart, but take your brain with you.
跟随自己的心,但要保持清醒的头脑。
Life has its ups and downs.
Sometimes the sun shines, sometimes the rain lashes,
but then it takes both the sun and rain to make a rainbow.
生活中有起有落,有时候阳光普照,有时候大雨倾盆,
但是只有在经历过阳光风雨之后才会有彩虹。
暂时就这么多吧,有些累了。.望采纳
6. 优美英文句子.
1. Stray birds of summer come to my window to sing and fly away. And yellow leaves of autumn, which have no songs, flutter and fall there with a sign. 夏天的飞鸟,飞到我的窗前唱歌,又飞去了。
秋天的黄叶,它们没有什么可唱,只叹息一声,飞落在那里。 2. I sit at my window this morning where the world like a passer-by stops for a moment, nods to me and goes. 我今晨坐在窗前,世界如一个路人似的,停留了一会,向我点点头又走过去了。
3. There is no rehearsal in the life , once missing , it will be lost forever. 世界上没有破镜重圆之说,一旦失去,就意味着永远失去 4. When every love comes to the end, if you look back, u will find flowers and sorrows, but it's always beautiful. 每段爱情在走向终结时,倒带回去,一路上或花草鲜美,或落英缤纷,而最初总是倾心的。 5. The fact is that the world is out of everyone's expectation. But some learn to forget, but others insist. 事实上,这个世界不符合所有人的梦想。
只是有人可以学会遗忘,有人却坚持。 6. No matter how cruel the destiny treats one with tribulation and misfortune, it will correspondingly treat him with happiness and sweetness. Even if the happiness is short and false, it's enough to light up the whole future life. 无论命运以怎样残忍的方式赐予一个人以磨难和不幸,但仍会相应地赐予他幸福与甜蜜,即使这幸福是如此短暂与不真实,也足以照亮他今后整个暗淡的人生。
7. I love you not because of who you are, but because of who I am with you. 我爱你,不是因为你是一个怎样的人,而是因为我喜欢与你在一起的感觉. 8. .No man or woman is worth your tears,and the one who is, won't make you cry. 没有人值得你流泪,值得你这么做的人不会让你哭泣. 9.The worst way to miss someone is to be sitting right beside them knowing you can't have them. 失去某人,最糟糕的莫过于,他近在身旁却犹如远在天边. 10.To the world you may be one person, but to one person you may be the world . 对于世界而言,你是一个人;但是对于某个人,你是他的整天世界. 11.Don't waste your time on a man/woman, who isn't willing to waste their time on you. 不要为那些不愿在你身上花费时间的人而浪费你的时间. 12.Just because someone doesn't love you the way you want them to, doesn't mean they don't love you with all they have. 爱你的人如果没有按你的方式来爱你,那并不代表他们没有全心全意地爱你. 13. Like the meeting of the seagulls and the waves we meet and come near. The seagulls fly off, the waves roll away and we depart 我们如海鸥之与波涛相遇似地,遇见了,走近了。海鸥飞去,波涛滚滚地流开,我们也分别了。
14. Love you, think of you, love you secretly, eagerly love you, wait, feel disappointed, try hard, lose, and feel sad, go apart, and recall.All of these are for sake of you. And I will never regret for it. 钟情,相思,暗恋,渴慕,等待,失望,试探,患得患失,痛不欲生,天涯永隔,追忆似水流年……种种这些,都曾因你而经历,也就誓不言悔。 15. The more you wanna know whether you have forgotten something, the better you remember; I once heard that, the only thing you can do when you no longer have something is not to forget. 你越想知道自己是不是忘记的时候,你反而记得越清楚,我曾经听人说过,当你不能再拥有的时候,唯一可以做的就是令自己不要忘记。
7. 一些美好的英文句子
1.True love is mutual unconditional surrender.真爱是双方的无条件投降2.DuskLooking into the sunset I can't help but notice that despite her beauty,a sense of struggle and hopeless surround the sky .Deep inside you realize that this day is gone,and everything that It had brought is lost forever.Every thought,every action,every dream,every hope,every sight,every sound is gone.There is no chance of every being returned the same,exactly the same.For every moment has a limit to what it can capture,Every memory has a limit to what it had retrieve.And the colours in the sky try to entertain us.one last act with painted smiles,for they too know that nothing can be done to save the day.So futile their attempt to comfort our fear of the night.our horror as we try to find our way,like children who wander into a forest and never return.I am ingratiated by the sunset because of her sensitivity as she tries to push the darknessback for just a moment more.But like so many times before。
.to no avail !译文:黄昏凝望夕阳,我无法抑止地看到,无论她是如何的美丽动人,挣扎和绝望依然萦绕天幕,内心深处,你明白今日已逝,它所带来的一切也永远消失了,每一脉思想,每一次行动,每一个梦想,每一线希望每一幅景象,每一缕声音,都消逝而去,一切都不可能还复如初,和原来一模一样,只因每一个时刻所能捕捉的东西是有限的,甚至每一段记忆所能缅怀的一切也是有限的而天空中的绮丽色彩努力让我们快乐起来,最后上演的是五彩缤纷的微笑,因为它们也知晓,做什么都无法留住时日,它们想安慰我们对夜的恐惧,而又如此徒劳无益,虽然恐惧,我们依然寻找出路,宛若在林中的孩子,彷徨不知归路,我满心欢喜,只因夕阳的敏感,她竭力将黑暗推回,仅仅为了再多驻留一刻,可却犹如以往,一切都无济于事。.3.The fastest way to lose love is to hold on it too tight, the best way to keep love is to give it wings.失去爱的最快的方式莫过于一直紧握不放,而最好的保持爱的方式就是给爱一双翅膀,让它飞翔。
8. 十句英语优美的句子有翻译的
我爱你并不是因为你是谁,而是因为我在你身边的时候我是谁。
I love you not for whom you are, but who I am when I'm by your side.
没有人值得你流泪,值得你流泪的人是不会让你哭的。
No person deserves your tears, and who deservers them won't make you cry.
只因为某人不如你所愿爱你,并不意味着你不被别人所爱。
Just because someone doesn't love you as you wish, it doesn't mean you're not loved with all his/her being.
一个真正的朋友会握着你的手,触动你的心。
A true friend is the one who holds your hand and touches your heart.
错过一个人最可怕的方式就是:坐在他/她的身旁,你却知道永远都不会拥有他/她。
The worst way to miss someone is to be seated by his/her side and know you'll never have him/her.
永远都不要停止微笑,即使是在你难过的时候,说不定有人会因为你的笑容而爱上你。
Never stop smiling, not even when you're sad, someone might fall in love with your smile.
你可能只是这个世界上的一个人,但对于某人来说,你就是全世界。
You may only be a person in this world, but for someone, you're the world.
不要把时间花在一个不在乎与你一起分享的人身上。
Don't spend time with someone who doesn't care spending it with you.
也许上帝让你在遇见那个合适的人之前遇见很多错误的人,所以,当这一切发生的时候,你应该心存感激。
Maybe God wants you to meet many wrong people before you meet the right one, so when this happens, you'll be thankful.
不要因为它的结束而哭,应当为它的发生而笑。
Don't cry because it came to an end. Smile because it happened.
生活中总会有伤害你的人,所以你仍然需要继续相信别人,只是小心些而已。
There will always be people who'll hurt you, so you need to continue trusting, just be careful.
做一个更好的人,确信在遇见一个新的人之前自己是谁,也希望那个人知道你是谁。
Be sure to know who you are before meeting someone new and hoping that person knows who you are.
9. 求几句优美的英语短句子
I miss you so much already and I haven't even left yet!
尽管还不曾离开,我已对你朝思暮想!
I'll think of you every step of the way.
我会想你,在漫漫长路的每一步。
Wherever you go, whatever you do, I will be right here waiting for you.
无论你身在何处,无论你为何忙碌,我都会在此守候。
One word frees us of all the weight and pain in life.That word is love. 有一个词可以让我们摆脱生活中所有的负担和痛苦,那就是"爱情"。
Every day without you is like a book without pages.
没有你的日子就像一本没有书页的书。
Love is hard to get into, but harder to get out of.
爱很难投入,但一旦投入,便更难走出。
Love is a light that never dims.
爱是一盏永不昏暗的明灯。
May your love soar on the wings of a dove in flight.
愿你的爱乘着飞翔的白鸽,展翅高飞。
She who has never loved, has never lived.
人活着总要爱一回。
Life is the flower for which love is the honey.
生命如花,爱情是蜜。
No words are necessary between two loving hearts.
两颗相爱的心之间不需要言语。
Precious things are very few in this world. That is the reason there is just one you.
在这世上珍贵的东西总是罕有,所以这世上只有一个你。
You make my heart smile.
我的心因你而笑。
不久前,谷歌正式推出 Jetpack Compose 1.0 版本。近日,JetBrains 在此基础上发布了 Compose Multiplatform Alpha 版本,旨在将 Compose 扩展到桌面和 Web 端。
Compose Multiplatform 由 Compose for Desktop 和 Compose for Web 组成,通过 Kotlin Multiplatform 支持许多不同的平台。其中,Compose Desktop 采用 Google 的 Skia 图形库,来实现在 Windows、macOS 和 Linux 上的 UI 绘制,借此在所有支持的操作系统中提供统一的体验,类似于 Flutter 的做法。
根据 Kotlin 团队的说法,相比起 Electron 框架,Compose Multiplatform 在内存消耗、安装大小和 UI 渲染性能等方面将有更明显的优势。随着 Alpha 版本的发布,Compose Multiplatform 还收获了新的 Android Studio 插件,包括对在 IDE 中显示组件预览的支持以及许多附加功能。
我们希望通过本文帮助大家进一步了解 Compose 的跨平台能力,以及 JetBrains 将 Compose 从 Android 扩展到这些其他平台背后的主要驱动力是什么。
基于 Jetpack Compose 1.0
由谷歌打造的 Jetpack Compose 是一款用于在 Android 应用程序之内构建用户界面的官方框架,上周刚刚发布 1.0 版本。与此同时,Android Studio 代号“极狐”的首个稳定版 2020.3.1 也正式亮相。
尽管才刚迎来 1.0,但谷歌表示“目前 Play Store 中已经有超过 2000 款应用程序在使用 Compose——更重要的是,就连 Play Store 这款应用本身也在使用 Compose。”谷歌方面还表示,“我们一直在与一些顶级应用的开发人员进行合作,他们的反馈和支持帮助我们使 1.0 版本更加强大。”
Jetpack Compose for Android 迎来 1.0 版本
Compose 基于 Kotlin 开发,而 Kotlin 与 Android Studio(即官方指定的 Android IDE)均来自开发工具厂商 JetBrains。虽然 Jetpack Compose 专为 Android 打造(与谷歌的 Flutter 框架不同), 但 JetBrains 公司坚信 Compose 完全能够获得跨平台能力 。
Compose for Desktop: 这只是开始
Compose Multiplatform 可以说是该框架面向 MacOS、Linux、Windows 以及 Web 开设的一个端口,目前刚刚发布 1.0 Alpha 版本。虽然尚处于早期开发阶段,但 JetBrains 表示,其已经“为开发人员带来能够基本安全使用的稳定 API”。
TheRegister 就此事询问了 JetBrains 公司 Compose 项目负责人 Nikolay Igotti,希望了解为什么该公司在拥有了已经广泛应用于 IntelliJ IDEA IDE 及多种丰富变体的桌面应用程序跨平台 Java 框架之外,还要费力开发 Compose for Desktop。Igotti 的回答是,“旧有 Java 框架基本上就是修改版的 Swing。Swing 属于默认 JDK UI 框架,Swing 和 AWT(Abstract Windows Toolkit,抽象窗口工具包)。Compose 则完全是另一码事,当然我们也在设计中考虑到了互操作性需求……Swing 这套框架太陈旧了,最早出现在上世纪九十年代末。多年来人们对于 UI 的设计思路已经天翻地覆,Swing 显然满足不了要求了。”
JetBrains IDE 中的 Compose for Desktop 项目
Compose 与 Swing 有一个比较大的共同点:与其他使用本机控件的跨平台框架,比如例如 Java 的 SWT(Standard Widget Toolkit)以及微软的 Xamarin 有所不同,它们选择自主绘制控件。Compose 使用的 Skia 开源图形库,也在谷歌 Chrome、Flutter 及其他众多框架当中得到广泛应用。那这是否意味着 Compose 应用程序将没有自己的原生外观?对此,Igotti 的回应是,“这取决于开发人员的选择,取决于他们如何为应用程序设置主题。在这方面,Compose 的情况与 Flutter 等其他框架没什么区别。”
那 Compose for Desktop 应用程序是否依赖于 JVM(Java Virtual Machine)运行?Igotti 表示,“我们也知道,JVM 应用程序的发布情况可能比较棘手。因此我们提供自己的 Gradle 插件,其使用 jpackage 与 Jlink 以 JVM 应用程序为基础制作原生应用程序。Mac 的.dmg、Windows 的 MSI、Linux 的 deb 包等均可实现,大家用不着担心 JVM。”
也就是说,开发成果将会是一款被精心包裹起来的 JVM 应用程序。JetBrains 还有一款用于解决这个问题的 Kotlin/Native 编译器,“预计将在未来发布,或者专门用于桌面开发。”
对应用程序的另一种思考方式
那 Web 应用程序方面呢?Igotti 回应称,“我们使用 Kotlin/JS 编译器。”Compose 的 Web 版本不如桌面版先进,说明文档中也警告称“API 尚未最终确定,预计会发生重大变化。”此外,虽然 Web 版本确实使用 Compose 模型,但 API 却完全不同,而且会使用 HTML 与 CSS。所以,Web 版与 Compose for Desktop 之间能够共享的代码应该比较少。
据 Igotti 介绍,“Compose 代表着一种不同的应用程序思考方式。状态即 UI 的真实来源,而 UI 本身是无状态的,其表达永远由状态计算得出。在这方面,Compose for Web 采用一组相同的原语,完全相同的状态管理思路。但是对于具体的小部件集合与排列方式,Web 版与桌面版之间确实无法互通。”
说到这里,为什么要把 Compose for Android 扩展到多种其他平台之上?“Compose 的目标受众主要分为三类。首先是使用 Kotlin 与 Compose 的 Android 开发人员,他们希望把自己的开发成果交付至其他平台;其二是纯 Kotlin 开发人员,他们希望以‘一次编写、随处运行’的方式开发新的应用程序;第三则是那些不太熟悉 Kotlin 或者 Compose,但又希望开发出精美 UI 的用户,我们希望能为他们提供实现目标的工具。”
Igotti 并没有给出具体的发布日期,但表示自己希望 Beta 版能在今年秋天发布,“我们也希望能在今年之内推出 1.0 版本。”项目本身是完全开源的,“二十一世纪了,框架在大多数人们心目中就不应该收费。我们只是想开发一款长期缺失的软件”,补足 JetBrains 当前商业模式中的工具链。
那么,JetBrains 会在自己的其他工具中使用 Compose 吗?事实上,他们的 JetBrains Toolbox(用于管理已安装的 IDE)已经在使用 Compose,但 Igotti 表示短时间内 Compose 还无法取代 IntelliJ IDEA 等现有框架。“编辑器是其中最复杂也最重要的组件,经历了 20 年的发展演进,我们几乎不可能在中途进行重写了。无论是 JetBrains 还是我个人,都不打算强迫每个人都转而使用 Compose。我们的目标是为原有框架选项满足不了的用户提供新的解决方案。”
写在最后
那么,为什么除了 Flutter 之外,我们还需要另一个跨平台框架?虽然谷歌的 Flutter 最开始主要面向移动设备,但现在也开始向桌面及 iOS 进军,甚至比 Compose 还抢先了一步。不过,根据 StackOverflow 的最新调查, Flutter 使用的语言为 Dart;尽管 Dart 语言的人气正在增长(正是受到 Flutter 的推动),但仍然无法与 Kotlin 相提并论。
Compose 代表着一种独特的 UI 构建方法,也许最期待 Compose 跨平台功能的受众,正是那些曾在 Android 上使用过它、又特别喜欢这种 UI 构建体验的开发者。
想要进一步了解 Compose,国内 Android 开发者可访问以下链接查看中文手册:
延伸阅读:
Dart作为高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式,基于mixin的继承方式是指:一个类可以继承自多个父类,相当于其他语言里的多继承。所有的类都有同一个基类Object,这和特性类似于Java语言,Java所有的类也都是继承自Object,也就是说一切皆对象。
Dart 是一门面向对象的语言, 全部的类都是继承自 Object , 除了支持传统的 继承、封装、多态 , 还有基于组合(Mixin-based)的继承特性
类型推导(var/final/const)
var
final和const的区别
3.非零即真( )
4.字符串
5.集合
Dart中变量初始值为null,即使是int类型也可以是null(java中int默认是0, boolean默认是false); Dart支持自识别,可以是用var定义变量,也可以直接指定具体类型; final或者const都可修饰不可变的变量,final变量只能赋值一次,const是编译时常量。
int和double是num子类,没有float类型; 支持字符串模板,用${expression}的方式来实现字符串效果,类似如字符串拼接; String可以使用单引号或者双引号; Dart没有数组,只有列表; 其中List,Set,Map不是抽象接口,是具体实现类,可直接使用; Map的key没有指定类型,key类型不一致不会报错;key不能相同,但是value可以相同,value可以为null。 var name = 'Tom';
方法也是对象,方法可赋值给一个变量; 如果方法的参数是解构出来的可以通过 @required 注解标注为必填 const Scrollbar({Key key, @required Widget child}); 支持可选参数,可选命名参数用{}包围,可选位置参数写在最后并且使用[]包围 String say(String from, String msg, [String device]); 支持默认参数 void enableFlags({bool bold = false, bool hidden = false}) {…}; 以_开头的方法都是私有的。 void main() {
支持闭包,闭包能够访问外部方法内部的局部变量
1.空替换?? expr1 ?? expr2,如果expr1是non-null,返回其值。否则执行expr2并返回其结果; 2.条件成员访问?.P?.y = 4; 如果p是non-null,则设置y的值等于4; 3.类型判定操作符(as,is,is!); 4.级联操作,可以在同一个对象上连续调用多个函数以及访问成员变量;
和java不同的是,Dart可以抛出任意类型的对象; 程序不会强制要求开发中处理异常,但若发生异常,程序会中断; 其中异常主要分为Error和Exception两种类型。
创建对象可以不使用new关键字; Dart中没有public,private,protected这些关键字; 没有interfaces关键字,每一个类都是一个接口。我们可以用抽象类来类比java中的接口; Dart把多重继承的类叫做Mixins。
支持语法糖 Point(this.x, this.y); 每个实例变量都会自动生成一个getter方法,Non-final变量还会自动生成一个setter; 命名构造函数,使用命名构造函数可以为一个类实现多个构造函数,也能更加清晰的表明你的意图;
断言是如果条件表达式不满足则停止代码执行; 断言只在检查模式下运行有效,如果在生产模式下运行则不会执行。
Dart 以两种模式运行: Dart 1.x 有生产模式和检查模式两种模式, Dart 2.x 中移除了检查模式。
注:建议在开发/测试模式中使用 检查模式 运行 Dart VM ,因为它会添加警告和错误以帮助开发和调试过程;选中的模式会强制执行各种检查,例如类型检查等。
dart标识符可以包括字符和数字,但不能以 数字开头 。
Dart 是一种面向对象的编程语言。
代码说明:定义了一个类 TestClass ,这个类拥有一个方法 disp() ,方法可以实现在终端打印字符串 Hello Dart! ,使用 new 关键字创建类的对象,该对象调用方法 disp() 。
关于dart的学习还有很多;我列出如下: Flutter高级工程师进阶学习资料;需要可以私信我。发送“核心笔记”或“手册”,即可领取资料!