Archifau Tagiau: JavaScript

Cyflym a hawdd: Creu Safle SharePoint Defnyddio REST

Ceir llawer o adnoddau o gwmpas sy'n dangos sut i wneud hyn, ond ni allai ddod o hyd i ddolen cynhwysfawr i, Felly dyma ni.

Gallwch greu safle SharePoint gan ddefnyddio API gweddill.  Dyma enghraifft llawn wedi'i bobi:

<!--
    SiteRequestForm.html: Casglu gwybodaeth ac yn creu safle ar gyfer y defnyddiwr.
-->

<canolfan>
<tabl>
    <tr>
        <TD>Enw'r safle:</TD>
        <TD><mewnbwn Math= "testun" Enw= "SiteName" id= "SiteName" /></TD>
    </tr>
    <tr>
        <TD colspan= "2">
            <mewnbwn Math= "gyflwyno" id"CreateSiteButton =" gwerth= "Creu safle" />
        </TD>
    </tr>
</tabl>
</canolfan>

<sgript src=".. /Plugins/jquery-1.11.0.min.JS"></sgript>

<sgript>
Roedd CreateSiteLogicContainer = {

    createSiteData: {
            "paramedrau": {
                __metadata: { "math": "SP. WebInfoCreationInformation" },
                Url: "Paultest1",
                Teitl: "Paultest1",
                Disgrifiad: "creu weddill we gan Paul!",
                Iaith: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: ffug
            }
    },

    createSite: swyddogaeth () {

        jQuery.support.cors = wir;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").val();
        
        $.AJAX({
            url: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            dull: "SWYDD",

            Penynnau: {
                "Derbyn": "cais/json; odata = amleiriog",
                "cynnwys math": "cais/json;odata = amleiriog",
                "X-RequestDigest": $("#__REQUESTDIGEST").val()
            },

            data: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            llwyddiant: swyddogaeth () { rhybuddio("llwyddiant"); },
            gwall: swyddogaeth () { rhybuddio("gwall"); }

        });
    },

    wireUpForm: swyddogaeth () {
        $("#CreateSiteButton").cliciwch(swyddogaeth () {
            rhybuddio("Am i geisio creu safle.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</sgript>

Pan llwyddiannus, Rydych yn derbyn pecyn JSON yn ymateb fel hyn:

image

Fy meddyliau allweddol a'r gwersi a ddysgwyd o hyn yn cynnwys:

  • Mae'r dull hwn yn defnyddio jQuery.  Yn fy achos, Lleolir fy llyfrgell jQuery yn "… / ategion. "  Byddwch chi eisiau newid hynny i dynnu sylw at eich lleoliad JQ hoff.
  • Gall eich copïo a gludo beintiwyd cyfan hwnnw yn rhan we Golygydd cynnwys ar dudalen a dylai weithio ychydig iawn.  Byddwch chi eisiau newid pwynt gorffen galwad API a gwnewch yn siŵr eich bod yn cyfeirio at JQ gywir.
  • Mae'r URL yn o'i gymharu â gwaelodlin eich API.  Yn fy achos, Mae'n creu is-safleoedd oddi tano https://bigapplesharepoint.com
  • Nid oes angen i chi ddarparu cynnwys-darn. Rhai swyddi blog a MSDN Mae'r ddogfen yn awgrymu eich bod yn gwneud, ond a ddigwyddodd i mi awtomatig, Yr wyf yn cymryd yn cael ei drin gan yr alwad.ajax $ ei hun.
  • Mae y llinell hon yn ofynnol er mwyn osgoi ymateb "gwaharddedig": "X-RequestDigest": $("#__REQUESTDIGEST").val().  Mae yna ffyrdd eraill i wneud hynny, ond mae hyn yn eithaf braf.  Yr wyf wedi colli cysylltiad i blog a ddarperir y llwybr byr hwn.  H/T i chi, rhyfedd blogger!

Lwc dda a gobeithiaf y bydd hyn yn helpu rhywun allan.

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Cyflym a syml: SharePoint REST Call Dim ond Ffurflenni 100 Cofnodion

Dwi wedi gweithio ar safle we sy'n wynebu cyhoeddus am fy arfer SharePoint yma yn Efrog newydd ac mae'n defnyddio llawer o alwadau JavaScript a gweddill i dangos y cynnwys.

Ystod datblygu prif linell, Dwi'n creu set fach gyda dim ond 10 neu felly roedd rhesi yn rhestr bersonol a galw fy weddill ei dynnu oddi yno.  Unwaith yr wyf yn rhygnu ar y rhestr i gael ychydig gannoedd o rhesi o ddata i brofi ar gyfer twf a ragwelir, Yr oedd yr oeddwn yn mynd yn union 100 rhesi a dychwelyd yn ôl ar fy galwadau weddill.

Mae hwn yn rhywbeth syml iawn i fynd i'r afael â.  Yn fy achos (a chredaf yn y rhan fwyaf o achosion), galw weddill diofyn i SharePoint (ac o bosibl fel diwydiant safonol?) dychwelyd 100 rhesi.  I ddychwelyd mwy na diofyn, Defnyddiwch y paramedr $top ar eich galwad, fel yn:

GAEL /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/eitemau?$Dewiswch = ID,Teitl,Categorïau/teitl,Blog_x0020_Author/teitl,DatePublished,BlogSummary&$ehangu = Blog_x0020_Author,Categorïau&$Hidlydd =&$brig = 9999

Cydiais 9999 yn yr achos hwn ers gwn growth-wise, Ni fydd mwy na 200 neu felly roedd rhesi yn ychwanegu at y rhestr hon yn y flwyddyn.  Os daw'n ungainly, gallwn weithredu rhai tudalennu i lawr y ffordd.

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Caching Dyn tlawd yn JavaScript

[TL;Fersiwn DR: defnyddio briwsion i storio canlyniadau'r async galwadau; rendr canlyniadau'r gorffennol async galwadau ar unwaith ac wedyn eu dilysu ar ôl llwytho tudalen.]

Dwi wedi bod yn gweithio ar safle mewnrwyd SharePoint i cleient y nodweddion, ymhlith pethau eraill, mordwyo uwchradd stylized eu dewisiadau dewislen yn cael eu rheoli drwy'r rhestr bersonol hen rheolaidd.  Y syniad yw bod y cleient yn cael i reoli ddewislen "eu" safle heb sy'n effeithio ar neu'n cael eu heffeithio gan y mordwyo byd-eang a roddir allan gan ei.

(Mae rhywbeth hynod o thwyllodrus am ychwanegu CEWP sy'n pwyntio at ffeil HTML yn y llwythi rhai CSS a JS i bron popeth am ymddygiad y safle … yn ei newid yn sylfaenol ond mae hynny ar gyfer swydd arall)

Y Cod ar gyfer hwn eithaf syml:

  • Aros am y dudalen gorffen llwytho a gwneud async alw lwytho'n eitemau ar y fwydlen o restr gan ddefnyddio gweddill neu lists.asmx neu beth bynnag
  • Gan ddefnyddio jQuery, ddeinamig boblogi criw os <li>y tu mewn yn rhiant <st> (Gweler erthygl Christian Pinder yma am esboniad syml o hwn tecnnique)
  • Ddefnyddio CSS i wneud yr holl fformatio
  • Elw!

Y fan a'r lle yma yn boenus yw, bob tro y mae unrhyw un yn taro un o dudalennau y safle, Mae porwr gwe bod defnyddiwr yn estyn allan i gael eitemau oddi ar y rhestr.  Unwaith y bydd datblygiad yn gyflawn ac yn profi wedi profi pethau i fod yn sefydlog ac yn gyflawn, alwad hon yn ddiangen mwy nag 99% yr amser ers y fwydlen yn anaml yn newid.  Mae hefyd yn effeithio ar UI rhyfedd sy'n gyffredin yn y byd newydd hwn dewr o wefannau hyper-ajaxy – Mae y dudalen yn ei gwneud, a dim ond wedyn yw y fwydlen rendr.  Mae'n ansicr ac yn tynnu sylw yn fy marn i.  Ac yn ansicr. Felly, storio. 

Addaswyd y rhesymeg yr thusly:

  • Edrych ar gyfer briwsionyn yn y porwr sy'n cynnwys y fwydlen fel y darllenais ddiwethaf mae'n
    • Os yw dod o hyd i, ei wneud ar unwaith.  Peidiwch ag aros am y dudalen i orffen llwytho.  (Mae angen i chi wneud siwr yn eich HTML strategol y sefyllfa yma, ond nid yw'n anodd i'w wneud).
  • Aros am y dudalen gorffen llwytho a gwneud async alw lwytho'n eitemau ar y fwydlen o restr gan ddefnyddio gweddill neu lists.asmx neu beth bynnag
  • Cymharu beth gen i erbyn briwsionyn
    • Os yn cyfateb, STOPIO
    • Fel arall,, gan ddefnyddio jQuery, ddeinamig boblogi criw os <li>y yn <st>
  • Ddefnyddio CSS i wneud yr holl fformatio
  • Elw!

Rhai ohonoch yn mynd i'w ddweud, "hei! Nid oes na gwirioneddol storio digwydd yma ers eich bod yn darllen y fwydlen beth bynnag bob tro."  A ydych chi'n iawn – nid wyf yn ildio unrhyw fath o seibiant y gweinydd.  Ond oherwydd y galw async ac sy'n digwydd ar ôl y dudalen cychwynnol y mae pwysau'r HTML llawn gwneud, "deimlad" fwy ymatebol i'r defnyddiwr.  Mae y fwydlen yn gwneud yn eithaf gymaint ag y mae y dudalen yn tynnu.  Os bydd y fwydlen yn digwydd i newid, Mae y defnyddiwr yn destun ansicr ail-lunio o'r fwydlen, ond dim ond y un pryd.

Ceir rhai ffyrdd o wneud storio hwn yn fwy effeithiol a helpu allan y gweinydd ar yr un pryd:

  • Yn rheol bod y "storfa briwsionyn" yn ddilys am o leiaf 24 oriau neu rhai amserlen eraill. Cyn belled â'u nid oes dim briwsion wedi dod i ben, defnyddio ciplun fwydlen y briwsion a erioed wedi cyrraedd y gweinydd.

Wel... Dyna'r cyfan sy'n dod i'r meddwl ar hyn o bryd :). 

Os oes gan unrhyw un unrhyw syniadau glyfar yma byddwn yn hoffi gwybod eu.

Ac yn olaf – y gellir defnyddio'r dechneg hon ar gyfer pethau eraill.  Tudalen y cleient hwn mae nifer o bethau data yrru ar dudalennau amrywiol, newid llawer ohonynt yn gymharol anaml (fel unwaith yr wythnos neu unwaith y mis).  Os ydych chi'n targedu ardaloedd penodol o ymarferoldeb, Gallwch roi UI fwy ymatebol drwy dynnu cynnwys o storfa briwsionyn lleol a rendro ar unwaith.  Mae'n teimlo gyflymach i'r defnyddiwr hyd yn oed os nid ydych chi'n arbed y gweinydd unrhyw feiciau.  Chi Gall arbed y cylchoedd gweinydd drwy benderfynu ar rai amodau a sbardunau i annilysu'r hwn cache briwsionyn lleol.  Mae hynny'n gwbl sefyllfaol a stwff artsy ac mewn gwirionedd mwyaf o hwyl :). 

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin