2016-10-11 3 views
1

Ich habe die folgende Struktur meines Sharepoint-Framework-Projekts.Wie importiere ich eine externe CSS in ein Typoskript-Projekt

Es sagt Modul nicht gefunden.

enter image description here

Mein Code ist dies

/// <reference path="../../../typings/jquery/jquery.d.ts" /> 
/// <reference path="../../../typings/jquery.dataTables/jquery.dataTables.d.ts" /> 

import { 
    BaseClientSideWebPart, 
    IPropertyPaneSettings, 
    IWebPartContext, 
    PropertyPaneTextField 
} from '@microsoft/sp-client-preview'; 

import styles from './Pnpcrudsample.module.scss'; 
import styles2 from './jquery.datatables.css'; 
import * as strings from 'pnpcrudsampleStrings'; 
import { IPnpcrudsampleWebPartProps } from './IPnpcrudsampleWebPartProps'; 
import * as pnp from 'sp-pnp-js'; 

interface IListItem { 
    Title?: string; 
    Id: number; 
} 

export default class PnpcrudsampleWebPart extends BaseClientSideWebPart<IPnpcrudsampleWebPartProps> { 

    public constructor(context: IWebPartContext) { 
    super(context); 
    pnp.setup({ 
     headers: { 
     'Accept': 'application/json;odata=nometadata' 
     } 
    }); 
    } 

    public render(): void { 

    this.domElement.innerHTML = `<table id="example" class="display" cellspacing="0" width="100%"> 
     <thead> 
      <tr> 
       <th>Name</th> 
       <th>Position</th> 
       <th>Office</th> 
       <th>Age</th> 
       <th>Start date</th> 
       <th>Salary</th> 
      </tr> 
     </thead> 
     <tfoot> 
      <tr> 
       <th>Name</th> 
       <th>Position</th> 
       <th>Office</th> 
       <th>Age</th> 
       <th>Start date</th> 
       <th>Salary</th> 
      </tr> 
     </tfoot> 
     <tbody> 
      <tr> 
       <td>Tiger Nixon</td> 
       <td>System Architect</td> 
       <td>Edinburgh</td> 
       <td>61</td> 
       <td>2011/04/25</td> 
       <td>$320,800</td> 
      </tr> 
      <tr> 
       <td>Garrett Winters</td> 
       <td>Accountant</td> 
       <td>Tokyo</td> 
       <td>63</td> 
       <td>2011/07/25</td> 
       <td>$170,750</td> 
      </tr> 
      <tr> 
       <td>Ashton Cox</td> 
       <td>Junior Technical Author</td> 
       <td>San Francisco</td> 
       <td>66</td> 
       <td>2009/01/12</td> 
       <td>$86,000</td> 
      </tr> 
      <tr> 
       <td>Cedric Kelly</td> 
       <td>Senior Javascript Developer</td> 
       <td>Edinburgh</td> 
       <td>22</td> 
       <td>2012/03/29</td> 
       <td>$433,060</td> 
      </tr> 
      <tr> 
       <td>Airi Satou</td> 
       <td>Accountant</td> 
       <td>Tokyo</td> 
       <td>33</td> 
       <td>2008/11/28</td> 
       <td>$162,700</td> 
      </tr> 
      <tr> 
       <td>Brielle Williamson</td> 
       <td>Integration Specialist</td> 
       <td>New York</td> 
       <td>61</td> 
       <td>2012/12/02</td> 
       <td>$372,000</td> 
      </tr> 
      <tr> 
       <td>Herrod Chandler</td> 
       <td>Sales Assistant</td> 
       <td>San Francisco</td> 
       <td>59</td> 
       <td>2012/08/06</td> 
       <td>$137,500</td> 
      </tr> 
      <tr> 
       <td>Rhona Davidson</td> 
       <td>Integration Specialist</td> 
       <td>Tokyo</td> 
       <td>55</td> 
       <td>2010/10/14</td> 
       <td>$327,900</td> 
      </tr> 
      <tr> 
       <td>Colleen Hurst</td> 
       <td>Javascript Developer</td> 
       <td>San Francisco</td> 
       <td>39</td> 
       <td>2009/09/15</td> 
       <td>$205,500</td> 
      </tr> 
      <tr> 
       <td>Sonya Frost</td> 
       <td>Software Engineer</td> 
       <td>Edinburgh</td> 
       <td>23</td> 
       <td>2008/12/13</td> 
       <td>$103,600</td> 
      </tr> 
      <tr> 
       <td>Jena Gaines</td> 
       <td>Office Manager</td> 
       <td>London</td> 
       <td>30</td> 
       <td>2008/12/19</td> 
       <td>$90,560</td> 
      </tr> 
      <tr> 
       <td>Quinn Flynn</td> 
       <td>Support Lead</td> 
       <td>Edinburgh</td> 
       <td>22</td> 
       <td>2013/03/03</td> 
       <td>$342,000</td> 
      </tr> 
      <tr> 
       <td>Charde Marshall</td> 
       <td>Regional Director</td> 
       <td>San Francisco</td> 
       <td>36</td> 
       <td>2008/10/16</td> 
       <td>$470,600</td> 
      </tr> 
      <tr> 
       <td>Haley Kennedy</td> 
       <td>Senior Marketing Designer</td> 
       <td>London</td> 
       <td>43</td> 
       <td>2012/12/18</td> 
       <td>$313,500</td> 
      </tr> 
      <tr> 
       <td>Tatyana Fitzpatrick</td> 
       <td>Regional Director</td> 
       <td>London</td> 
       <td>19</td> 
       <td>2010/03/17</td> 
       <td>$385,750</td> 
      </tr> 
      <tr> 
       <td>Michael Silva</td> 
       <td>Marketing Designer</td> 
       <td>London</td> 
       <td>66</td> 
       <td>2012/11/27</td> 
       <td>$198,500</td> 
      </tr> 
      <tr> 
       <td>Paul Byrd</td> 
       <td>Chief Financial Officer (CFO)</td> 
       <td>New York</td> 
       <td>64</td> 
       <td>2010/06/09</td> 
       <td>$725,000</td> 
      </tr> 
      <tr> 
       <td>Gloria Little</td> 
       <td>Systems Administrator</td> 
       <td>New York</td> 
       <td>59</td> 
       <td>2009/04/10</td> 
       <td>$237,500</td> 
      </tr> 
      <tr> 
       <td>Bradley Greer</td> 
       <td>Software Engineer</td> 
       <td>London</td> 
       <td>41</td> 
       <td>2012/10/13</td> 
       <td>$132,000</td> 
      </tr> 
      <tr> 
       <td>Dai Rios</td> 
       <td>Personnel Lead</td> 
       <td>Edinburgh</td> 
       <td>35</td> 
       <td>2012/09/26</td> 
       <td>$217,500</td> 
      </tr> 
      <tr> 
       <td>Jenette Caldwell</td> 
       <td>Development Lead</td> 
       <td>New York</td> 
       <td>30</td> 
       <td>2011/09/03</td> 
       <td>$345,000</td> 
      </tr> 
      <tr> 
       <td>Yuri Berry</td> 
       <td>Chief Marketing Officer (CMO)</td> 
       <td>New York</td> 
       <td>40</td> 
       <td>2009/06/25</td> 
       <td>$675,000</td> 
      </tr> 
      <tr> 
       <td>Caesar Vance</td> 
       <td>Pre-Sales Support</td> 
       <td>New York</td> 
       <td>21</td> 
       <td>2011/12/12</td> 
       <td>$106,450</td> 
      </tr> 
      <tr> 
       <td>Doris Wilder</td> 
       <td>Sales Assistant</td> 
       <td>Sidney</td> 
       <td>23</td> 
       <td>2010/09/20</td> 
       <td>$85,600</td> 
      </tr> 
      <tr> 
       <td>Angelica Ramos</td> 
       <td>Chief Executive Officer (CEO)</td> 
       <td>London</td> 
       <td>47</td> 
       <td>2009/10/09</td> 
       <td>$1,200,000</td> 
      </tr> 
      <tr> 
       <td>Gavin Joyce</td> 
       <td>Developer</td> 
       <td>Edinburgh</td> 
       <td>42</td> 
       <td>2010/12/22</td> 
       <td>$92,575</td> 
      </tr> 
      <tr> 
       <td>Jennifer Chang</td> 
       <td>Regional Director</td> 
       <td>Singapore</td> 
       <td>28</td> 
       <td>2010/11/14</td> 
       <td>$357,650</td> 
      </tr> 
      <tr> 
       <td>Brenden Wagner</td> 
       <td>Software Engineer</td> 
       <td>San Francisco</td> 
       <td>28</td> 
       <td>2011/06/07</td> 
       <td>$206,850</td> 
      </tr> 
      <tr> 
       <td>Fiona Green</td> 
       <td>Chief Operating Officer (COO)</td> 
       <td>San Francisco</td> 
       <td>48</td> 
       <td>2010/03/11</td> 
       <td>$850,000</td> 
      </tr> 
      <tr> 
       <td>Shou Itou</td> 
       <td>Regional Marketing</td> 
       <td>Tokyo</td> 
       <td>20</td> 
       <td>2011/08/14</td> 
       <td>$163,000</td> 
      </tr> 
      <tr> 
       <td>Michelle House</td> 
       <td>Integration Specialist</td> 
       <td>Sidney</td> 
       <td>37</td> 
       <td>2011/06/02</td> 
       <td>$95,400</td> 
      </tr> 
      <tr> 
       <td>Suki Burks</td> 
       <td>Developer</td> 
       <td>London</td> 
       <td>53</td> 
       <td>2009/10/22</td> 
       <td>$114,500</td> 
      </tr> 
      <tr> 
       <td>Prescott Bartlett</td> 
       <td>Technical Author</td> 
       <td>London</td> 
       <td>27</td> 
       <td>2011/05/07</td> 
       <td>$145,000</td> 
      </tr> 
      <tr> 
       <td>Gavin Cortez</td> 
       <td>Team Leader</td> 
       <td>San Francisco</td> 
       <td>22</td> 
       <td>2008/10/26</td> 
       <td>$235,500</td> 
      </tr> 
      <tr> 
       <td>Martena Mccray</td> 
       <td>Post-Sales support</td> 
       <td>Edinburgh</td> 
       <td>46</td> 
       <td>2011/03/09</td> 
       <td>$324,050</td> 
      </tr> 
      <tr> 
       <td>Unity Butler</td> 
       <td>Marketing Designer</td> 
       <td>San Francisco</td> 
       <td>47</td> 
       <td>2009/12/09</td> 
       <td>$85,675</td> 
      </tr> 
      <tr> 
       <td>Howard Hatfield</td> 
       <td>Office Manager</td> 
       <td>San Francisco</td> 
       <td>51</td> 
       <td>2008/12/16</td> 
       <td>$164,500</td> 
      </tr> 
      <tr> 
       <td>Hope Fuentes</td> 
       <td>Secretary</td> 
       <td>San Francisco</td> 
       <td>41</td> 
       <td>2010/02/12</td> 
       <td>$109,850</td> 
      </tr> 
      <tr> 
       <td>Vivian Harrell</td> 
       <td>Financial Controller</td> 
       <td>San Francisco</td> 
       <td>62</td> 
       <td>2009/02/14</td> 
       <td>$452,500</td> 
      </tr> 
      <tr> 
       <td>Timothy Mooney</td> 
       <td>Office Manager</td> 
       <td>London</td> 
       <td>37</td> 
       <td>2008/12/11</td> 
       <td>$136,200</td> 
      </tr> 
      <tr> 
       <td>Jackson Bradshaw</td> 
       <td>Director</td> 
       <td>New York</td> 
       <td>65</td> 
       <td>2008/09/26</td> 
       <td>$645,750</td> 
      </tr> 
      <tr> 
       <td>Olivia Liang</td> 
       <td>Support Engineer</td> 
       <td>Singapore</td> 
       <td>64</td> 
       <td>2011/02/03</td> 
       <td>$234,500</td> 
      </tr> 
      <tr> 
       <td>Bruno Nash</td> 
       <td>Software Engineer</td> 
       <td>London</td> 
       <td>38</td> 
       <td>2011/05/03</td> 
       <td>$163,500</td> 
      </tr> 
      <tr> 
       <td>Sakura Yamamoto</td> 
       <td>Support Engineer</td> 
       <td>Tokyo</td> 
       <td>37</td> 
       <td>2009/08/19</td> 
       <td>$139,575</td> 
      </tr> 
      <tr> 
       <td>Thor Walton</td> 
       <td>Developer</td> 
       <td>New York</td> 
       <td>61</td> 
       <td>2013/08/11</td> 
       <td>$98,540</td> 
      </tr> 
      <tr> 
       <td>Finn Camacho</td> 
       <td>Support Engineer</td> 
       <td>San Francisco</td> 
       <td>47</td> 
       <td>2009/07/07</td> 
       <td>$87,500</td> 
      </tr> 
      <tr> 
       <td>Serge Baldwin</td> 
       <td>Data Coordinator</td> 
       <td>Singapore</td> 
       <td>64</td> 
       <td>2012/04/09</td> 
       <td>$138,575</td> 
      </tr> 
      <tr> 
       <td>Zenaida Frank</td> 
       <td>Software Engineer</td> 
       <td>New York</td> 
       <td>63</td> 
       <td>2010/01/04</td> 
       <td>$125,250</td> 
      </tr> 
      <tr> 
       <td>Zorita Serrano</td> 
       <td>Software Engineer</td> 
       <td>San Francisco</td> 
       <td>56</td> 
       <td>2012/06/01</td> 
       <td>$115,000</td> 
      </tr> 
      <tr> 
       <td>Jennifer Acosta</td> 
       <td>Junior Javascript Developer</td> 
       <td>Edinburgh</td> 
       <td>43</td> 
       <td>2013/02/01</td> 
       <td>$75,650</td> 
      </tr> 
      <tr> 
       <td>Cara Stevens</td> 
       <td>Sales Assistant</td> 
       <td>New York</td> 
       <td>46</td> 
       <td>2011/12/06</td> 
       <td>$145,600</td> 
      </tr> 
      <tr> 
       <td>Hermione Butler</td> 
       <td>Regional Director</td> 
       <td>London</td> 
       <td>47</td> 
       <td>2011/03/21</td> 
       <td>$356,250</td> 
      </tr> 
      <tr> 
       <td>Lael Greer</td> 
       <td>Systems Administrator</td> 
       <td>London</td> 
       <td>21</td> 
       <td>2009/02/27</td> 
       <td>$103,500</td> 
      </tr> 
      <tr> 
       <td>Jonas Alexander</td> 
       <td>Developer</td> 
       <td>San Francisco</td> 
       <td>30</td> 
       <td>2010/07/14</td> 
       <td>$86,500</td> 
      </tr> 
      <tr> 
       <td>Shad Decker</td> 
       <td>Regional Director</td> 
       <td>Edinburgh</td> 
       <td>51</td> 
       <td>2008/11/13</td> 
       <td>$183,000</td> 
      </tr> 
      <tr> 
       <td>Michael Bruce</td> 
       <td>Javascript Developer</td> 
       <td>Singapore</td> 
       <td>29</td> 
       <td>2011/06/27</td> 
       <td>$183,000</td> 
      </tr> 
      <tr> 
       <td>Donna Snider</td> 
       <td>Customer Support</td> 
       <td>New York</td> 
       <td>27</td> 
       <td>2011/01/25</td> 
       <td>$112,000</td> 
      </tr> 
     </tbody> 
    </table>`; 

    $(document).ready(function() { 
     $('#example').DataTable(); 
    }); 
    /* <div class="${styles.pnpcrudsample}"> 
     <div class="${styles.container}"> 
      <div class="ms-Grid-row ms-bgColor-themeDark ms-fontColor-white ${styles.row}"> 
      <div class="ms-Grid-col ms-u-lg10 ms-u-xl8 ms-u-xlPush2 ms-u-lgPush1"> 
       <span class="ms-font-xl ms-fontColor-white">Welcome to SharePoint!</span> 
       <p class="ms-font-l ms-fontColor-white">Customize SharePoint experiences using Web Parts.</p> 
       <p class="ms-font-l ms-fontColor-white">${this.properties.description}</p> 
       <a href="https://github.com/SharePoint/sp-dev-docs/wiki" class="ms-Button ${styles.button}"> 
       <span class="ms-Button-label">Learn more</span> 
       </a> 
      </div> 
      </div> 
     </div> 
     </div>`;*/ 
    } 





    protected get propertyPaneSettings(): IPropertyPaneSettings { 
    return { 
     pages: [ 
     { 
      header: { 
      description: strings.PropertyPaneDescription 
      }, 
      groups: [ 
      { 
       groupName: strings.BasicGroupName, 
       groupFields: [ 
       PropertyPaneTextField('listName', { 
        label: strings.ListNameFieldLabel 
       }) 
       ] 
      } 
      ] 
     } 
     ] 
    }; 
    } 

    private updateStatus(status: string, items: IListItem[] = []): void { 
    this.domElement.querySelector('.status').innerHTML = status; 
    this.updateItemsHtml(items); 
    } 

    private readItems(): void { 
    this.updateStatus('Loading all items...'); 
    pnp.sp.web.lists.getByTitle(this.properties.listName) 
     .items.select('Title', 'Id').get() 
     .then((items: IListItem[]): void => { 
     this.updateStatus(`Successfully loaded ${items.length} items`, items); 
     }, (error: any): void => { 
     this.updateStatus('Loading all items failed with error: ' + error); 
     }); 
    } 

    private updateItemsHtml(items: IListItem[]): void { 
    const itemsHtml: string[] = []; 
    for (let i: number = 0; i < items.length; i++) { 
     itemsHtml.push(`<li>${items[i].Title} (${items[i].Id})</li>`); 
    } 

    this.domElement.querySelector('.items').innerHTML = itemsHtml.join(''); 
    } 
} 

Ich frage mich, ob es auch eine einfache Möglichkeit ist es, eine CSS-Datei von einem CDN zu laden und nicht mit der CSS-Datei zu meinem Projekt zu kopieren.

https://www.datatables.net/examples/basic_init/zero_configuration.html

aktualisieren

Ich habe auch versucht diese:

Import importableModuleLoader von '@ microsoft/sp-Modul-Lader';

export default class PnpcrudsampleWebPart extends BaseClientSideWebPart<IPnpcrudsampleWebPartProps> { 

    public constructor(context: IWebPartContext) { 
    super(context); 
    importableModuleLoader.loadCss('//cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css'); 
    pnp.setup({ 

jedoch meine webpart Laden ist nicht die Stile

Mein Ziel so etwas wie dies zu tun ist: https://www.datatables.net/examples/basic_init/zero_configuration.html

aber 100% Typoskript

Wenn ich den Browser Registerkarte Netzwerk überprüfen, Ich kann sehen, dass die CSS-Datei geladen ist, aber Stile nicht angewendet werden: enter image description here

Antwort

3

Ich glaube, Sie missverstehen die Verwendung von import in TypeScript. Dies sollte verwendet werden, um Module zu definieren.

Sein Versuch, die CSS zu laden und zu verstehen, aber es kann nicht, weil sein CSS nicht TypeScript.

Verwenden Sie stattdessen require.

var styles = require(./XXXX.CSS)

+0

wenn Sie den Code (automatisch generiert durch yoman) sehen, hat es einen Verweis auf eine .scss-Datei und der Import für diese Datei nur gut funktioniert, warum? –

+0

@ LuisValencia-MVP Ich denke, Yeoman verwendet ein SCSS-Plugin, um SCSS-Importe zu behandeln. Im Falle von Webpack, können Sie ein CSS-Plugin hinzufügen, um css-Importe – K3v1n

+0

zu handhaben Ich rate von der Namenskonvention es ist ein anerkanntes Modul (Pnpcrudsample.module.scss). Öffnen Sie den Dateiinhalt, vielleicht wird es klar, aber im Allgemeinen sollten Sie 'require' nicht' import' für CSS verwenden. Könnte auch ein Drittanbieter-Plugin sein, das die scss unterstützt! – Dandy

Verwandte Themen