thẻ ghi lưu trữ: Dung JavaScript

Nhanh chóng và dễ dàng: Tạo một trang web SharePoint sử dụng còn lại

Có rất nhiều tài nguyên xung quanh thành phố cho thấy làm thế nào để làm điều này, nhưng tôi không thể tìm thấy một liên kết đi đến toàn diện, Vì vậy ở đây chúng tôi là.

Bạn có thể tạo ra một trang web SharePoint sử dụng API còn lại.  Đây là một ví dụ đầy đủ nướng:

<!--
    SiteRequestForm.html: Thu thập thông tin và tạo ra một trang web cho người dùng.
-->

<Trung tâm>
<Bàn>
    <tr>
        <TD>Tên trang web:</TD>
        <TD><đầu vào loại= "văn bản" Tên= "SiteName" ID= "SiteName" /></TD>
    </tr>
    <tr>
        <TD colSpan= "2">
            <đầu vào loại= "gửi" ID= "CreateSiteButton" giá trị= "Tạo các trang web" />
        </TD>
    </tr>
</Bàn>
</Trung tâm>

<kịch bản SRC="../Plugins/jQuery-1.11.0.min.js"></kịch bản>

<kịch bản>
var CreateSiteLogicContainer = {

    createSiteData: {
            "tham số": {
                __metadata: { "loại": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Tiêu đề: "Paultest1",
                Mô tả: "còn lại tạo ra web bởi Paul!",
                Ngôn ngữ: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: sai
            }
    },

    createSite: chức năng () {

        jQuery.support.cors = sự thật;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").Val();
        
        $.Ajax({
            URL: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            phương pháp: "BÀI VIẾT",

            tiêu đề: {
                "Chấp nhận": "ứng dụng/json; oData = tiết",
                "content-type": "ứng dụng/json;oData = tiết",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            dữ liệu: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            thành công: chức năng () { cảnh báo("thành công"); },
            lỗi: chức năng () { cảnh báo("lỗi"); }

        });
    },

    wireUpForm: chức năng () {
        $("#CreateSiteButton").Nhấp vào(chức năng () {
            cảnh báo("Về để thử và tạo ra các trang web.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</kịch bản>

Khi thành công, bạn nhận được một gói dữ liệu JSON trong phản ứng như thế này:

image

Chính những suy nghĩ của tôi và bài học từ này bao gồm:

  • Cách tiếp cận này sử dụng jQuery.  Trong trường hợp của tôi, thư viện jQuery của tôi nằm trong ".../ plugins. "  Bạn sẽ muốn thay đổi điều đó để trỏ đến vị trí JQ yêu thích của bạn.
  • Bạn có thể sao chép và dán đó toàn bộ đoạn thành một phần biên tập nội dung Web trên một trang và nó sẽ làm việc chỉ tốt.  Bạn sẽ muốn thay đổi điểm kết thúc của cuộc gọi API và đảm bảo rằng bạn tham khảo JQ một cách chính xác.
  • URL có liên quan điểm cuối của API của bạn.  Trong trường hợp của tôi, nó việc tạo ra các trang web phụ bên dưới https://bigapplesharepoint.com
  • Bạn không cần phải cung cấp nội dung dài. Một số bài đăng trên blog và MSDN tài liệu ngụ ý rằng bạn làm, nhưng đã xảy ra cho tôi tự động, mà tôi giả định đang được xử lý bởi các cuộc gọi .ajax $ chính nó.
  • Dòng này là cần thiết để tránh một phản ứng "Cấm": "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Có những cách khác để làm điều đó, nhưng điều này là khá tốt đẹp.  Tôi đã mất liên kết vào blog đó cung cấp lối tắt này.  H/T để bạn, bí ẩn blogger!

Chúc may mắn và hy vọng điều này sẽ giúp người nào đó.

</kết thúc>

undefinedĐăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Nhanh chóng và đơn giản: SharePoint còn lại gọi chỉ trả về 100 Hồ sơ

Tôi đã làm việc trên một trang web công cộng phải đối mặt với thực tế SharePoint của tôi ở đây trong New York và nó sử dụng rất nhiều cuộc gọi JavaScript và còn lại để hiển thị nội dung.

Trong những phát triển, Tôi tạo ra một tập dữ liệu nhỏ với chỉ 10 hoặc vì vậy hàng trong một danh sách tùy chỉnh và các cuộc gọi phần còn lại của tôi tất cả Lấy từ đó.  Một lần tôi bumped lên danh sách để có một số hàng trăm của dữ liệu để kiểm tra dự đoán tăng trưởng, Tôi thấy rằng tôi đã nhận được chính xác 100 hàng quay trở lại trên cuộc gọi phần còn lại của tôi.

Đây là một điều rất đơn giản để địa chỉ.  Trong trường hợp của tôi (và tôi tin rằng trong nhiều trường hợp), mặc định còn lại gọi cho SharePoint (và có thể là một ngành công nghiệp tiêu chuẩn?) trở lại 100 hàng.  Để trở lại nhiều hơn mặc định, sử dụng tham số $top trên cuộc gọi của bạn, như trong:

Nhận được /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/khoản mục?$chọn = ID,Tiêu đề,Thể loại/tiêu đề,Blog_x0020_Author/tiêu đề,DatePublished,BlogSummary&$mở rộng = Blog_x0020_Author,Thể loại&$bộ lọc =&$đầu = 9999

Tôi đã chọn 9999 trong trường hợp này kể từ khi tôi biết rằng growth-wise, sẽ không có nhiều hơn 200 hoặc vì vậy hàng thêm vào danh sách này trong một năm.  Nếu nó sẽ trở thành ungainly, chúng tôi có thể thực hiện một số phân trang xuống đường.

</kết thúc>

undefinedĐăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Người nghèo của bộ nhớ đệm trong JavaScript

[TL;Phiên bản DR: sử dụng cookie để lưu trữ các kết quả của cuộc gọi async; Hiển thị các kết quả của quá khứ async cuộc gọi ngay lập tức và sau đó xác nhận họ sau khi tải trang.]

Tôi đã làm việc trên SharePoint intranet site cho một khách hàng tính năng đó, trong số những thứ khác, một hướng trung học cách điệu mà tùy chọn trình đơn được quản lý thông qua một danh sách tùy chỉnh cũ thường xuyên.  Ý tưởng là rằng khách hàng được để kiểm soát trình đơn "của họ" trang web mà không ảnh hưởng đến hoặc bị ảnh hưởng bởi việc chuyển hướng toàn cầu đặt của nó.

(đó là một cái gì đó vô cùng lật đổ về việc thêm một CEWP điểm vào một tập tin HTML mà tải một số CSS và JS để về cơ bản làm thay đổi gần như tất cả mọi thứ về hành vi của một trang web... nhưng đó là cho đăng bài khác)

Mã này khá đơn giản:

Ở đây tại chỗ đau là mà mỗi khi bất cứ ai chạm một trong các trang của trang web, trình duyệt web của người dùng đó đến để có được khoản mục khỏi danh sách.  Một khi dev được hoàn tất và thử nghiệm đã chứng minh những điều cần được ổn định và đầy đủ, cuộc gọi này là không cần thiết hơn 99% thời gian từ trình đơn hiếm khi thay đổi.  Nó cũng có một ảnh hưởng đến giao diện người dùng lạ mà là phổ biến trong thế giới mới dũng cảm này của các trang web siêu ajaxy-Hiển thị hình ảnh trang và trình đơn đưa ra chỉ sau đó.  Nó là hốt hoảng kinh hai và mất tập trung trong quan điểm của tôi.  Và hốt hoảng kinh hai. Vì vậy, bộ nhớ đệm. 

Tôi đổi logic thusly:

  • Tìm kiếm một cookie trong trình duyệt có chứa trình đơn như tôi cuối đọc nó
    • Nếu tìm thấy, khiến nó ngay lập tức.  Đừng chờ đợi cho trang để hoàn tất tải.  (Bạn cần phải đảm bảo rằng HTML của bạn chiến lược được đặt ở đây, nhưng nó không phải là khó khăn để làm).
  • Chờ đợi cho trang để hoàn tất tải và làm cho một async gọi để tải lên mục trình đơn từ một danh sách bằng cách sử dụng phần còn lại hoặc lists.asmx hoặc bất cứ điều gì
  • So sánh những gì tôi nhận chống lại cookie
    • Nếu nó phù hợp với, Dừng
    • Nếu không, bằng cách sử dụng jQuery, tự động điền một bó nếu <Li>của trong một <ul>
  • Sử dụng CSS để làm tất cả các định dạng
  • Lợi nhuận!

Một số bạn sẽ nói, "hey! có là không có xảy ra bộ nhớ đệm thực sự ở đây kể từ khi bạn đang đọc menu dù sao mỗi lần duy nhất.”  Và bạn nói đúng-tôi không cho các máy chủ bất kỳ hình thức nào của phá vỡ.  Nhưng vì cuộc gọi async và sẽ xảy ra sau khi trang đầu tiên tải trọng chiến đấu HTML đầy đủ ám, "thật" đáp ứng tốt hơn cho người dùng.  Menu ám khá nhiều càng tốt trang thu hút.  Nếu trình đơn sẽ xảy ra với sự thay đổi, người sử dụng phải chịu sự một hốt hoảng kinh hai tái vẽ của menu, nhưng chỉ một lần.

Có một số cách để làm cho bộ nhớ đệm này hiệu quả hơn và giúp đỡ các máy chủ cùng một lúc:

  • Đặt trong một quy tắc rằng bộ nhớ cache cookie"" có hiệu lực tối thiểu 24 giờ hoặc một số khung thời gian khác. Miễn là có không có cookie hết hạn, sử dụng các cookie của menu ảnh chụp và không bao giờ trúng các máy chủ.

Vâng... đó là tất cả những gì tôi suy nghĩ ngay bây giờ :). 

Nếu bất cứ ai có bất cứ ý tưởng thông minh ở đây tôi rất muốn biết họ.

Và cuối cùng-kỹ thuật này có thể được sử dụng cho các công cụ khác.  Điều này khách hàng trang có một số điều hướng dữ liệu trên nhiều trang, nhiều người trong số họ thay đổi tương đối hiếm khi (giống như một lần một tuần hoặc mỗi tháng một lần).  Nếu bạn nhắm mục tiêu các khu vực cụ thể của chức năng, bạn có thể cho một giao diện người dùng phản ứng nhanh hơn bằng cách kéo nội dung từ các cửa hàng địa phương cookie và rendering ngay lập tức.  Nó cảm thấy nhanh hơn để người sử dụng ngay cả khi bạn đang không cứu máy chủ bất kỳ chu kỳ.  Bạn có thể tiết kiệm các chu kỳ máy chủ bằng cách quyết định một số điều kiện và gây nên để làm mất hiệu lực bộ nhớ cache cookie địa phương này.  Đó là tất cả tình huống và artsy stuff và thực sự phần lớn vui :). 

</kết thúc>

undefinedĐăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin