Imwe yeakanakisa maficha e1C: Enterprise tekinoroji ndeyekuti mhinduro yekushandisa, yakagadziridzwa uchishandisa yakagadziriswa mafomu tekinoroji, inogona kutangwa mune yakatetepa (inogoneka) mutengi weWindows, Linux, MacOS X, uye seweb mutengi wemabhurawuza mashanu - Chrome, Internet Explorer, Firefox, Safari, Edge, uye zvese izvi pasina kushandura kodhi yekushandisa. Uyezve, kunze kwekushandisa kwemutengi mutete uye mubrowser inoshanda uye inotaridzika zvakafanana.
Tsvaga gumi mutsauko (10 mifananidzo pasi pekuchekwa):
Mutengi mutengi hwindo paLinux:
Iro hwindo rimwe chete rewebhu mutengi (mu Chrome browser):
Sei takagadzira mutengi wewebhu? Kuzvitaura zvinonzwisa tsitsi, nguva yakatigadzirira basa rakadaro. Kushanda paInternet kwagara kuri chinhu chinodiwa pakushandisa bhizinesi. Chekutanga, isu takawedzera kugona kushanda kuburikidza neInternet kune mutengi wedu mutete (vamwe vevakwikwidzi vedu, nenzira, vakamira ipapo; vamwe, zvakasiyana, vakasiya mutengi mutete uye vakagumira ivo pachavo kuita mutengi wewebhu). Isu takasarudza kupa vashandisi vedu mukana wekusarudza sarudzo yemutengi inovakodzera zvakanyanya.
Kuwedzera webhu-yakavakirwa kugona kune mutete mutengi yaive purojekiti hombe ine shanduko yakazara mutengi-server architecture. Kugadzira mutengi wewebhu ipurojekiti nyowani, kutanga kubva pakatanga.
Kugadzirwa kwedambudziko
Saka, zvinodikanwa zveprojekiti: mutengi wewebhu anofanira kuita zvakafanana nemutengi mutete, anoti:
- Ratidza mushandisi interface
- Ita kodhi yemutengi yakanyorwa mumutauro we1C
Mushandisi wemushandisi mu1C inotsanangurwa mune inooneka mupepeti, asi inozivisa, isina pixel-by-pixel kurongeka kwezvinhu; Anenge matatu gumi nemaviri emhando dzema interface anoshandiswa - mabhatani, minda yekuisa (zvinyorwa, nhamba, zuva / nguva), rondedzero, matafura, magirafu, nezvimwe.
Kodhi yemutengi mumutauro we1C inogona kunge iine mafoni evhavha, kushanda nezviwanikwa zvemuno (mafaira, nezvimwewo), kudhinda, nezvimwe zvakawanda.
Vese vari vaviri mutengi mutete (kana vachishanda kuburikidza newebhu) uye mutengi wewebhu anoshandisa imwechete seti yewebhu masevhisi kutaurirana ne1C application server. Kuitwa kwevatengi, hongu, kwakasiyana - mutengi mutete akanyorwa muC ++, iyo webhu mutengi yakanyorwa muJavaScript.
A bit of history
Iyo web client project yakatanga muna 2006, nechikwata che (paavhareji) vanhu vashanu. Pane dzimwe nhanho dzepurojekiti, vagadziri vakabatanidzwa kuita basa chairo (gwaro respreadsheet, madhayagiramu, nezvimwewo); sekutonga, ava vaive vagadziri vakafanana vakaita izvi mutengi mutete. Avo. vagadziri vakanyora zvakare zvikamu muJavaScript zvavakanga vambogadzira muC++.
Kubva pakutanga, isu takaramba pfungwa yechero otomatiki (kunyangwe chikamu) shanduko yeC++ yakaonda mutengi kodhi kuita JavaScript webhu mutengi nekuda kwekusiyana kwakasimba kwepfungwa pakati pemitauro miviri iyi; iyo mutengi wewebhu yakanyorwa muJavaScript kubva pakutanga.
Mukutanga kudzokororwa kwepurojekiti, mutengi wewebhu akashandura kodhi yemutengi mune yakavakirwa-mukati 1C mutauro zvakananga muJavaScript. Mutengi mutete anoita zvakasiyana - kodhi mumutauro wakavakirwa-mukati 1C inounganidzwa mubytecode, uyezve iyi bytecode inodudzirwa pamutengi. Mushure meizvozvo, mutengi wewebhu akatanga kuita zvakafanana - chekutanga, yakapa budiriro yekuita, uye chechipiri, yakaita kuti zvikwanise kubatanidza zvivakwa zvevatete uye webhu vatengi.
Yekutanga vhezheni ye1C:Enterprise papuratifomu ine webhu mutengi rutsigiro yakaburitswa muna 2009. Mutengi wewebhu panguva iyoyo aitsigira mabhurawuza maviri - Internet Explorer neFirefox. Zvirongwa zvepakutanga zvaisanganisira kutsigirwa kweOpera, asi nekuda kwematambudziko asingakundiki panguva iyoyo nemabatiro ekuvhara maapplication muOpera (hazvaikwanisika kuronda ne2% chokwadi chekuti chikumbiro chaive chiri kuvhara, uye panguva iyoyo kuita nzira yekudzima kubva. iyo 100C application server) kubva muzvirongwa izvi zvaifanira kusiiwa.
Chirongwa cheprojekiti
Pakazara, iyo 1C:Enterprise platform ine 4 mapurojekiti akanyorwa muJavaScript:
- WebTools - akagovaniswa maraibhurari anoshandiswa nemamwe mapurojekiti (tinosanganisirawo
Google Yekuvhara Raibhurari ). - Control element
FormattedDocument (inoshandiswa muJavaScript mune zvese mutengi mutete uye mutengi wewebhu) - Control element
scheduler (inoshandiswa muJavaScript mune zvese mutengi mutete uye mutengi wewebhu) - Web client
Chimiro chepurojekiti imwe neimwe yakafanana nemaitiro eJava mapurojekiti (kana .NET mapurojekiti - chero ari pedyo); Tine nzvimbo dzemazita, uye imwe neimwe nzvimbo yezita iri mune yakaparadzana folda. Mukati mefolda mune mafaera uye makirasi emazita. Kune angangoita 1000 mafaera muwebhu client project.
Zvimiro, mutengi wewebhu akakamurwa zvakanyanya kuita anotevera subsystems:
- Yakagadziriswa mutengi application interface
- General application interface (system menyu, mapaneru)
- Interface yemafomu anogadziriswa, anosanganisira, pakati pezvimwe zvinhu, angangoita makumi matatu ekudzora (mabhatani, akasiyana marudzi enzvimbo dzekuisa - zvinyorwa, nhamba, zuva/nguva, nezvimwewo, matafura, rondedzero, magirafu, nezvimwewo)
- Chinhu modhi inowanikwa kune vanogadzira pane mutengi (anopfuura mazana mana emarudzi akazara: yakachengetedzwa interface chinhu modhi, marongero edhisheni, zvimiro zvemaitiro, nezvimwewo)
- Muturikiri weiyo yakavakirwa-mukati 1C mutauro
- Mawedzero ebrowser (anoshandiswa kuita zvisinga tsigirwe muJavaScript)
- Kushanda necryptography
- Kushanda nemafaira
- Tekinoroji yezvikamu zvekunze, zvichivabvumira kushandiswa mune zvese zvakatetepa uye webhu vatengi
Development Features
Kuita zvese zviri pamusoro muJavaScript hazvisi nyore. Zvichida iyo 1C yewebhu mutengi ndeimwe yeakakura-mutengi-parutivi application yakanyorwa muJavaScript - ingangoita 450.000 mitsetse. Isu tinoshingairira kushandisa nzira yakatarisana nechinhu muwebhu kodhi yemutengi, iyo inorerutsa kushanda nepurojekiti yakakura kudaro.
Kuti tideredze saizi yekodhi yemutengi, takatanga kushandisa yedu obfuscator, uye kutanga neplatform version 8.3.6 (Gumiguru 2014) takatanga kushandisa.
- Own obfuscator - 1556 kb
- Google Kuvhara Compiler - 1073 kb
Kushandisa Google Kuvhara Compiler kwakatibatsira kuvandudza mashandiro ewebhu mutengi ne30% zvichienzaniswa neyedu obfuscator. Uye zvakare, huwandu hwekuyeuka hunopedzwa nechishandiso hwadzikira ne15-25% (zvinoenderana nebrowser).
Google Kuvhara Compiler inoshanda chaizvo nekodhi-yakatarisana nekodhi, saka kushanda kwayo kwewebhu mutengi kwakakwira zvakanyanya sezvinobvira. Kuvhara Compiler inotiitira zvinhu zvishoma zvakanaka:
- Static mhando yekutarisa padanho rekuvaka purojekiti (inovimbisa kuti tinovhara kodhi neJSDoc zvirevo). Mhedzisiro yacho ndeye static typing, iri padyo padanho rekunyora muC++. Izvi zvinobatsira kubata chikamu chakakura kwazvo chezvikanganiso padanho rekugadzira chirongwa.
- Kuderedza kodhi saizi kuburikidza neobfuscation
- A akati wandei ma optimizations eiyo kodhi kodhi, semuenzaniso, senge:
- inline basa zvinotsiva. Kudana basa muJavaScript ibasa rinodhura, uye inline inotsiva yeanowanzo shandiswa nzira diki dzinomhanyisa kodhi.
- Kuverenga garandi panguva yekuunganidza. Kana kutaura kunotsamira pane zvinogara zvakadaro, ukoshi chaihwo hwenguva dzose hunotsiviwa mairi
Isu tinoshandisa WebStorm senzvimbo yedu yekuvandudza vatengi vewebhu.
Kuongorora kwekodhi tinoshandisa
Ndeapi matambudziko akaita/tiri kugadzirisa?
Panguva yekushandiswa kweprojekti, takasangana nematambudziko akawanda anonakidza ataifanira kugadzirisa.
Shandura data neseva uye pakati pemahwindo
Pane mamiriro ezvinhu apo obfuscation yekodhi yekodhi inogona kukanganisa kushanda kwehurongwa. Kodhi yekunze kune yewebhu mutengi kodhi inogoneka, nekuda kwekukanganisa, inogona kunge iine basa uye parameter mazita akasiyana neayo anotarisirwa kodhi yedu. Iyo yekunze kodhi yedu ndeye:
- Kodhi inouya kubva kuseva muchimiro che data zvimiro
- Kodhi yeimwe hwindo rekushandisa
Kuti udzivise kubvongodzwa kana uchidyidzana nesevha, tinoshandisa @expose tag:
/**
* @constructor
* @extends {Base.SrvObject}
*/
Srv.Core.GenericException = function ()
{
/**
* @type {string}
* @expose
*/
this.descr;
/**
* @type {Srv.Core.GenericException}
* @expose
*/
this.inner;
/**
* @type {string}
* @expose
*/
this.clsid;
/**
* @type {boolean}
* @expose
*/
this.encoded;
}
Uye kuti tidzivise kubvongodzwa kana tichibatana nemamwe mahwindo, tinoshandisa izvo zvinonzi zvinotengeswa kunze kwenyika (interfaces umo nzira dzese dzinotengeswa kunze).
/**
* ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π° DropDownWindow
*
* @interface
* @struct
*/
WebUI.IDropDownWindowExp = function(){}
/**
* ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° 1 Π²ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠ»ΠΈ Π½Π°Π·Π°Π΄
*
* @param {boolean} isForward
* @param {boolean} checkOnly
* @return {boolean}
* @expose
*/
WebUI.IDropDownWindowExp.prototype.moveMarker = function (isForward, checkOnly){}
/**
* ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² Π½Π°ΡΠ°Π»ΠΎ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Π΅Ρ
*
* @param {boolean} isFirst
* @param {boolean} checkOnly
* @return {boolean}
* @expose
*/
WebUI.IDropDownWindowExp.prototype.moveMarkerTo = function (isFirst, checkOnly){}
/**
* @return {boolean}
* @expose
*/
WebUI.IDropDownWindowExp.prototype.selectValue = function (){}
Isu takashandisa Virtual DOM isati yave huru)
Kufanana nevagadziri vese vari kubata neakaomesesa Webhu UIs, isu takakurumidza kuona kuti iyo DOM haina kukodzera kushanda neane simba mushandisi interfaces. Nenguva isipi, analogue yeVirtual DOM yakaitwa kuti ikwidze basa neUI. Munguva yekugadziriswa kwechiitiko, shanduko dzese dzeDOM dzinochengetwa mundangariro uye, chete kana mabasa ese apera, shanduko dzakaunganidzwa dzinoiswa pamuti weDOM.
Kugadzirisa mutengi wewebhu
Kuita kuti mutengi wedu wewebhu ashande nekukurumidza, tinoedza kushandisa zvakajairwa browser kugona (CSS, nezvimwewo) kusvika pakakwirira. Nekudaro, iyo fomu yekuraira pani (iri paanenge ese mafomu ekushandisa) inopihwa chete uchishandisa browser maturusi, uchishandisa ine simba dhizaini yakavakirwa paCSS.
Kuedza
Pakuyedza kushanda uye kuita, tinoshandisa chishandiso chemuridzi (chakanyorwa muJava neC ++), pamwe nesutu yemiedzo yakavakirwa pamusoro pe.
Chishandiso chedu chepasirese - chinokutendera kuti uedze chero chirongwa chine hwindo, uye nekudaro chakakodzera kuyedza mutengi mutete uye mutengi wewebhu. Chishandiso chinorekodha zviito zvemushandisi akatanga 1C application mhinduro mune script faira. Panguva imwecheteyo, mifananidzo yenzvimbo yekushanda yechidzitiro - zviyero - inorekodhwa. Kana uchitarisa shanduro itsva dzewebhu client, zvinyorwa zvinoridzwa pasina kutora chikamu kwemushandisi. Muzviitiko apo iyo skrini isingaenderane nereferenzi pane chero nhanho, bvunzo inoonekwa yakundikana, mushure mezvo nyanzvi yemhando inoitisa ongororo yekuona kana ichi chiri chikanganiso kana shanduko yakarongwa mumafambiro ehurongwa. Muchiitiko chemaitiro akarongwa, zviyero zvinongotsiviwa nemitsva.
Chishandiso chinoyerawo kuita kwekushandisa nekurongeka kweanosvika makumi maviri neshanu milliseconds. Mune zvimwe zviitiko, tinopenengura zvikamu zvechinyorwa (somuenzaniso, kudzokorora kurongeka kwekupinda kakawanda) kuongorora kushatiswa kwenguva yekuuraya nekufamba kwenguva. Mhedzisiro yezviyero zvese zvinonyorwa mulog kuti iongororwe.
Yedu yekuyedza chishandiso uye application pasi pekuyedzwa
Chishandiso chedu uye Selenium zvinopindirana; semuenzaniso, kana rimwe bhatani pane imwe yezviratidziro rachinja nzvimbo yaro, Selenium inogona kusateedzera izvi, asi chishandiso chedu chinozoona, nekuti. inoita pixel-by-pixel kuenzanisa kweiyo skrini neyakajairwa. Chishandiso ichi zvakare chinokwanisa kuteedzera matambudziko nekugadzirisa mapindiro kubva kukhibhodi kana mbeva, sezvo izvi ndizvo chaizvo zvazvinoburitsa.
Miedzo pane ese maturusi (edu neSelenium) anomhanyisa akajairwa ebasa mamiriro kubva kune yedu yekushandisa mhinduro. Miedzo inotangwa otomatiki mushure mekuvakwa kwemazuva ese kwe1C: Enterprise platform. Kana zvinyorwa zvichinonoka (zvichienzaniswa neyakapfuura kuvaka), tinoongorora uye kugadzirisa chikonzero chekudzikira. Chiyero chedu chiri nyore - chivakwa chitsva hachifanirwe kushanda zvishoma pane chakapfuura.
Vagadziri vanoshandisa zvishandiso zvakasiyana kuongorora zviitiko zvinononoka; kunyanya kushandiswa
Zvakare, chimwe chezvikonzero zvekudonha kwekuita kungave kuti Google Kuvhara Compiler nekuda kwechimwe chikonzero haina kukwanisa kuita inline kutsiva basa (somuenzaniso, nekuti basa rinodzokororwa kana rakaita). Muchiitiko ichi, tinoedza kugadzirisa mamiriro acho nekunyora patsva code code.
Browser extensions
Kana mhinduro yekushandisa ichida kushanda kusiri kuwanikwa muJavaScript, isu tinoshandisa browser ekuwedzera:
- yekushanda nemafaira
- yekushanda necryptography
- shanda ne
zvikamu zvekunze
Mawedzero edu ane zvikamu zviviri. Chikamu chekutanga ndicho chinonzi browser yekuwedzera (kazhinji edzedzero yeChrome neFirefox yakanyorwa muJavaScript), iyo inodyidzana nechikamu chechipiri - bhinari yekuwedzera iyo inoshandisa mashandiro atinoda. Zvinofanira kutaurwa kuti isu tinonyora 3 shanduro dzemabhinari ekuwedzera - yeWindows, Linux uye MacOS. Iyo bhinari yekuwedzera inopihwa sechikamu che1C:Enterprise chikuva uye iri pane 1C application server. Kana yadaidzwa kekutanga kubva kune mutengi wewebhu, inotorwa kumutengi komputa uye yakaiswa mubrowser.
Kana tichimhanya muSafari, mawedzero edu anoshandisa NPAPI; kana uchimhanya muInternet Explorer, vanoshandisa tekinoroji yeActiveX.
Kumwe budiriro
Rimwe remabasa ewebhu mutengi kuvandudza timu ndiko kuwedzera kusimudzira kwekushanda. Kushanda kwemutengi wewebhu kunofanirwa kufanana nekushanda kwemutengi mutete; zvese zvitsva zvinoshanda zvinoitwa panguva imwe chete mune vese vatete uye vewebhu vatengi.
Mamwe mabasa anosanganisira kugadzira zvivakwa, refactoring, kuvandudza mashandiro uye kuvimbika. Semuyenzaniso, imwe yemadhairekitori ndeyekufamba kwakananga kune asynchronous basa modhi. Kumwe kushanda kwewebhu mutengi parizvino kwakavakirwa pane inofananidzwa modhi yekudyidzana neseva. Iyo asynchronous modhi yave kuve yakakosha mumabhurawuza (uye kwete chete mumabhurawuza), uye izvi zvinotimanikidza kugadzirisa mutengi wewebhu nekutsiva mafoni anopindirana neasynchronous (uye kudzoreredza kodhi saizvozvo). Iko kushanduka zvishoma nezvishoma kune asynchronous modhi inotsanangurwa nekudikanwa kwekutsigira yakaburitswa mhinduro uye zvishoma nezvishoma kugadzirisa.
Source: www.habr.com