testjs插件类库组织与管理
先举个例子,比如jquery插件中的calendar在一个页面中就得有如下代码
复制代码代码如下:
<style type="text/css">
@import ""script/calendar/jquery.datepick.css";
</style>
<script type="text/javascript" src="script/jquery1.3.2.js"></script>
<script type="text/javascript" src=""script/calendar/jquery.datepick.js"></script>
<script type="text/javascript" src=""script/calendar/jquery.datepick-zh-CN.js"></script>
看上面代码,calendar代码得运用四个相关的文件。其中jquery1.3.2.js是必须的,jquery.datepick-zh-CN.js依赖于jquery.datepick.js(日历插件),而jquery.datepick.css是插件的样式。
运用以上代码得很小心的对待插件的依赖关系,主次关系不能换,移动文件路径还得改动文件src路径,以上script中下载js文件都是单线程下载,理想的是进行多线程下载(firebug看得出来),再者就是插件的缓存问题(插件更新了,客户端可能还保存着原来的文件)。
看过不少网上关于这方面的解决方案,博客园中有SmartScript和javaeye中有JSI,它们貌似都存在一个boot.js文件。而我的解决方案就只需要一个script后面跟插件参数即可。
以下是我对上述问题的一个解决方案:
<script type="text/javascript" src="script.do?plugins=calendar"></script>
在一个页面中只需要js应用的插件只需要script.do后跟参数后插件名参数即可,其它的工作就是在整体写一个插件资源配置文件(写插件配置的人得弄清楚js相关资源,这个只需要配置一次),至于其它什么也不需要弄。
插件资源配置文件
复制代码代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<script path="script/plugins/" name="script/jquery1.3.2.js" lazy="script/plugins/lazy/jquery.lazy-1.3.1.js">
<!--自动完成-->
<plugin name="autocomplete" file="autocomplete/jquery.autocomplete.js">
<lazy file="autocomplete/jquery.autocomplete.css"></lazy>
</plugin>
<!--日历-->
<plugin name="calendar" file="calendar/jquery.datepick.pack.js">
<lazy file="calendar/jquery.datepick.css"></lazy>
<lazy file="calendar/jquery.datepick-zh-CN.js"></lazy>
</plugin>
<!--提示框-->
<plugin name="tip" file="tip/jquery.tip.js">
<lazy file="tip/bs.css"></lazy>
</plugin>
<!--拖动-->
<plugin name="draggable" file="jquery.draggable.js">
<lazy file="ui/ui.core.js"></lazy>
<lazy file="draggable/ui.draggable.css"></lazy>
</plugin>
<!--拖动放下-->
<plugin name="droppable" file="jquery.droppable.js">
<lazy file="ui/ui.core.js"></lazy>
<lazy file="droppable/ui.droppable.css"></lazy>
<lazy file="draggable/ui.draggable.js"></lazy>
<lazy file="draggable/ui.draggable.css"></lazy>
</plugin>
</script>
html示例代码:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head id="Head1" runat="server">
- <title>无标题页</title>
- <%-- <script type="text/javascript" src="script/jquery1.3.2.js"></script>
- <script type="text/javascript" src="script/plugins/lazy/jquery.lazy-1.3.1.js"></script>--%>
- <script type="text/javascript" src="script.do?plugins=autocomplete,tip"></script>
- </head>
- <body>
- <input type="text" id="suggest1" style="border:1px solid #ccc"/><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
- <a href="#" title="Basic Tool Tip" class="bslink">Tip1</a><br />
- </body>
- </html>
- <script>
- var cities = [
- "Aberdeen", "Ada", "Adamsville", "Addyston", "Adelphi", "Adena", "Adrian", "Akron",
- "Albany", "Alexandria", "Alger", "Alledonia", "Alliance", "Alpha", "Alvada",
- "Alvordton", "Amanda", "Amelia", "Amesville", "Amherst", "Amlin", "Amsden",
- "Amsterdam", "Andover", "Anna", "Ansonia", "Antwerp", "Apple Creek", "Arcadia",
- "Arcanum", "Archbold", "Arlington", "Ashland", "Ashley", "Ashtabula", "Ashville",
- "Athens", "Attica", "Atwater", "Augusta", "Aurora", "Austinburg", "Ava", "Avon",
- "Avon Lake", "Bainbridge", "Bakersville", "Baltic", "Baltimore", "Bannock",
- "Barberton", "Barlow", "Barnesville", "Bartlett", "Barton", "Bascom", "Batavia",
- "Bath", "Bay Village", "Beach City", "Beachwood", "Beallsville", "Beaver",
- "Beaverdam", "Bedford", "Bellaire", "Bell*", "Belle Center", "Belle Valley",
- "Bellefontaine", "Bellevue", "Bellville", "Belmont", "Belmore", "Beloit", "Belpre",
- "Benton Ridge", "Bentonville", "Berea", "Bergholz", "Berkey", "Berlin",
- "Berlin Center", "Berlin Heights", "Bethel", "Bethesda", "Bettsville", "Beverly",
- "Bidwell", "Big Prairie", "Birmingham", "Blacklick", "Bladensburg", "Blaine",
- "Blakeslee", "Blanchester", "Blissfield", "Bloomdale", "Bloomingburg",
- "Bloomingdale", "Bloomville", "Blue Creek", "Blue Rock", "Bluffton",
- "Bolivar", "Botkins", "Bourneville", "Bowerston", "Bowersville",
- "Bowling Green", "Bradford", "Bradner", "Brady Lake", "Brecksville",
- "Bremen", "Brewster", "Brice", "Bridgeport", "Brilliant", "Brinkhaven",
- "Bristolville", "Broadview Heights", "Broadway", "*field", "*park",
- "*ville", "Brownsville", "Brunswick", "Bryan", "Buchtel", "Buckeye Lake",
- "Buckland", "Bucyrus", "Buffalo", "Buford", "Burbank", "Burghill", "Burgoon",
- "Burkettsville", "Burton", "Butler", "Byesville", "Cable", "Cadiz", "Cairo",
- "Caldwell", "Caledonia", "Cambridge", "Camden", "Cameron", "Camp Dennison",
- "Campbell", "Canal Fulton", "Canal Winchester", "Canfield", "Canton", "Carbon Hill",
- "Carbondale", "Cardington", "Carey", "Carroll", "Carrollton", "Casstown",
- "Castalia", "Catawba", "Cecil", "Cedarville", "Celina", "Centerburg",
- "Chagrin Falls", "Chandlersville", "Chardon", "Charm", "Chatfield", "Chauncey",
- "Cherry Fork", "Chesapeake", "Cheshire", "Chester", "Chesterhill", "Chesterland",
- "Chesterville", "Chickasaw", "Chillicothe", "Chilo", "Chippewa Lake",
- "Christiansburg", "Cincinnati", "Circleville", "Clarington", "Clarksburg",
- "Clarksville", "Clay Center", "Clayton", "Cleveland", "Cleves", "Clifton",
- "Clinton", "Cloverdale", "Clyde", "Coal Run", "Coalton", "Coldwater", "Colerain",
- "College Corner", "Collins", "Collinsville", "Colton", "Columbia Station",
- "Columbiana", "Columbus", "Columbus Grove", "Commercial Point", "Conesville",
- "Conneaut", "Conover", "Continental", "Convoy", "Coolville", "Corning", "Cortland",
- "Coshocton", "Covington", "Creola", "Crestline", "Creston", "Crooksville",
- "Croton", "Crown City", "Cuba", "Cumberland", "Curtice", "Custar", "Cutler",
- "Cuyahoga Falls", "Cygnet", "Cynthiana", "Dalton", "Damascus", "Danville",
- "Dayton", "De Graff", "Decatur", "Deerfield", "Deersville", "Defiance",
- "Delaware", "Dellroy", "Delphos", "Delta", "Dennison", "Derby", "Derwent",
- "Deshler", "Dexter City", "Diamond", "Dillonvale", "Dola", "Donnelsville",
- "Dorset", "Dover", "Doylestown", "Dresden", "Dublin", "Dunbridge", "Duncan Falls",
- "Dundee", "Dunkirk", "Dupont", "East Claridon", "East Fultonham",
- "East Liberty", "East Liverpool", "East Palestine", "East Rochester",
- "East Sparta", "East Springfield", "Eastlake", "Eaton", "Edgerton", "Edison",
- "Edon", "Eldorado", "Elgin", "Elkton", "Ellsworth", "Elmore", "Elyria",
- "Empire", "Englewood", "Enon", "Etna", "Euclid", "Evansport", "Fairborn",
- "Fairfield", "Fairpoint", "Fairview", "Farmdale", "Farmer", "Farmersville",
- "Fayette", "Fayetteville", "Feesburg", "Felicity", "Findlay", "Flat Rock",
- "Fleming", "Fletcher", "Flushing", "Forest", "Fort Jennings", "Fort Loramie",
- "Fort Recovery", "Fostoria", "Fowler", "Frankfort", "Franklin",
- "Franklin Furnace", "Frazeysburg", "Fredericksburg", "Fredericktown",
- "Freeport", "Fremont", "Fresno", "Friendship", "Fulton", "Fultonham",
- "Galena", "Galion", "Gallipolis", "Galloway", "Gambier", "Garrettsville",
- "Gates Mills", "Geneva", "Genoa", "Georgetown", "Germantown", "Gettysburg",
- "Gibsonburg", "Girard", "Glandorf", "Glencoe", "Glenford", "Glenmont",
- "Glouster", "Gnadenhutten", "Gomer", "Goshen", "Grafton", "Grand Rapids",
- "Grand River", "Granville", "Gratiot", "Gratis", "Graysville", "Graytown",
- "Green", "Green Camp", "Green Springs", "Greenfield", "Greenford",
- "Greentown", "Greenville", "Greenwich", "Grelton", "Grove City",
- "Groveport", "Grover Hill", "Guysville", "Gypsum", "Hallsville",
- "Hamden", "Hamersville", "Hamilton", "Hamler", "Hammondsville",
- "Hannibal", "Hanoverton", "Harbor View", "Harlem Springs", "Harpster",
- "Harrisburg", "Harrison", "Harrisville", "Harrod", "Hartford", "Hartville",
- "Harveysburg", "Haskins", "Haverhill", "Haviland", "Haydenville", "Hayesville",
- "Heath", "Hebron", "Helena", "Hicksville", "Higginsport", "Highland", "Hilliard",
- "Hillsboro", "Hinckley", "Hiram", "Hockingport", "Holgate", "Holland",
- "Hollansburg", "Holloway", "Holmesville", "Homer", "Homerville", "Homeworth",
- "Hooven", "Hopedale", "Hopewell", "Houston", "Howard", "Hoytville", "Hubbard",
- "Hudson", "Huntsburg", "Huntsville", "Huron", "Iberia", "Independence",
- "Irondale", "Ironton", "Irwin", "Isle Saint George", "Jackson", "Jackson Center",
- "Jacksontown", "Jacksonville", "Jacobsburg", "Jamestown", "Jasper",
- "Jefferson", "Jeffersonville", "Jenera", "Jeromesville", "Jerry City",
- "Jerusalem", "Jewell", "Jewett", "Johnstown", "Junction City", "Kalida",
- "Kansas", "Keene", "Kelleys Island", "Kensington", "Kent", "Kenton",
- "Kerr", "Kettlersville", "Kidron", "Kilbourne", "Killbuck", "Kimbolton",
- "Kings Mills", "Kingston", "Kingsville", "Kinsman", "Kipling", "Kipton",
- "Kirby", "Kirkersville", "Kitts Hill", "Kunkle", "La Rue", "Lacarne",
- "Lafayette", "Lafferty", "Lagrange", "Laings", "Lake Milton", "Lakemore",
- "Lakeside Marblehead", "Lakeview", "Lakeville", "Lakewood", "Lancaster",
- "Langsville", "Lansing", "Latham", "Latty", "Laura", "Laurelville",
- "Leavittsburg", "Lebanon", "Lees Creek", "Leesburg", "Leesville",
- "Leetonia", "Leipsic", "Lemoyne", "Lewis Center", "Lewisburg",
- "Lewistown", "Lewisville", "Liberty Center", "Lima", "Limaville",
- "Lindsey", "Lisbon", "Litchfield", "Lithopolis", "Little Hocking",
- "Lockbourne", "Lodi", "Logan", "London", "Londonderry",
- "Long Bottom", "Lorain", "Lore City", "Loudonville", "Louisville",
- "Loveland", "Lowell", "Lowellville", "Lower Salem", "Lucas",
- "Lucasville", "Luckey", "Ludlow Falls", "Lynchburg", "Lynx",
- "Lyons", "Macedonia", "Macksburg", "Madison", "Magnetic Springs",
- "Magnolia", "Maineville", "Malaga", "Malinta", "Malta", "Malvern",
- "Manchester", "Mansfield", "Mantua", "Maple Heights", "Maplewood",
- "Marathon", "Marengo", "Maria Stein", "Marietta", "Marion",
- "Mark Center", "Marshallville", "Martel", "Martin", "Martins Ferry",
- "Martinsburg", "Martinsville", "Marysville", "Mason", "Massillon",
- "Masury", "Maumee", "Maximo", "Maynard", "Mc Arthur", "Mc Clure",
- "Mc Comb", "Mc Connelsville", "Mc Cutchenville", "Mc Dermott",
- "Mc Donald", "Mc Guffey", "Mechanicsburg", "Mechanicstown",
- "Medina", "Medway", "Melmore", "Melrose", "Mendon", "Mentor",
- "Mesopotamia", "Metamora", "Miamisburg", "Miamitown", "Miamiville",
- "Middle Bass", "Middle Point", "Middlebranch", "Middleburg",
- "Middlefield", "Middleport", "Middletown", "Midland", "Midvale",
- "Milan", "Milford", "Milford Center", "Millbury", "Milledgeville",
- "Miller City", "Millersburg", "Millersport", "Millfield",
- "Milton Center", "Mineral City", "Mineral Ridge", "Minerva",
- "Minford", "Mingo", "Mingo Junction", "Minster", "Mogadore",
- "Monclova", "Monroe", "Monroeville", "Montezuma", "Montpelier",
- "Montville", "Morral", "Morristown", "Morrow", "Moscow",
- "Mount Blanchard", "Mount Cory", "Mount Eaton", "Mount Gilead",
- "Mount Hope", "Mount Liberty", "Mount Orab", "Mount Perry",
- "Mount Pleasant", "Mount Saint Joseph", "Mount Sterling",
- "Mount Vernon", "Mount Victory", "Mowrystown", "Moxahala",
- "Munroe Falls", "Murray City", "Nankin", "Napoleon", "Nashport",
- "Nashville", "Navarre", "Neapolis", "Neffs", "Negley",
- "Nelsonville", "Nevada", "Neville", "New Albany", "New Athens",
- "New Bavaria", "New Bloomington", "New Bremen", "New Carlisle",
- "New Concord", "New Hampshire", "New Haven", "New Holland",
- "New Knoxville", "New Lebanon", "New Lexington", "New London",
- "New Madison", "New Marshfield", "New Matamoras", "New Middletown",
- "New Paris", "New Philadelphia", "New Plymouth", "New Richmond",
- "New Riegel", "New Rumley", "New Springfield", "New Straitsville",
- "New Vienna", "New Washington", "New Waterford", "New Weston",
- "Newark", "Newbury", "Newcomerstown", "Newport", "Newton Falls",
- "Newtonsville", "Ney", "Niles", "North Baltimore", "North Bend",
- "North Benton", "North Bloomfield", "North Fairfield",
- "North Georgetown", "North Hampton", "North Jackson",
- "North Kingsville", "North Lawrence", "North Lewisburg",
- "North Lima", "North Olmsted", "North Ridgeville", "North Robinson",
- "North Royalton", "North Star", "Northfield", "Northwood", "Norwalk",
- "Norwich", "Nova", "Novelty", "Oak Harbor", "Oak Hill", "Oakwood",
- "Oberlin", "Oceola", "Ohio City", "Okeana", "Okolona", "Old Fort",
- "Old Washington", "Olmsted Falls", "Ontario", "Orangeville",
- "Oregon", "Oregonia", "Orient", "Orrville", "Orwell", "Osgood",
- "Ostrander", "Ottawa", "Ottoville", "Otway", "Overpeck",
- "Owensville", "Oxford", "Painesville", "Palestine", "Pandora",
- "Paris", "Parkman", "Pataskala", "Patriot", "Paulding", "Payne",
- "Pedro", "Peebles", "Pemberton", "Pemberville", "Peninsula",
- "Perry", "Perrysburg", "Perrysville", "Petersburg", "Pettisville",
- "Phillipsburg", "Philo", "Pickerington", "Piedmont", "Pierpont",
- "Piketon", "Piney Fork", "Pioneer", "Piqua", "Pitsburg",
- "Plain City", "Plainfield", "Pleasant City", "Pleasant Hill",
- "Pleasant Plain", "Pleasantville", "Plymouth", "Polk",
- "Pomeroy", "Port Clinton", "Port Jefferson", "Port Washington",
- "Port William", "Portage", "Portland", "Portsmouth", "Potsdam",
- "Powell", "Powhatan Point", "Proctorville", "Prospect", "Put in Bay",
- "Quaker City", "Quincy", "Racine", "Radnor", "Randolph", "Rarden",
- "Ravenna", "Rawson", "Ray", "Rayland", "Raymond", "Reedsville",
- "Reesville", "Reno", "Republic", "Reynoldsburg", "Richfield",
- "Richmond", "Richmond Dale", "Richwood", "Ridgeville Corners",
- "Ridgeway", "Rio Grande", "Ripley", "Risingsun", "Rittman",
- "Robertsville", "Rock Camp", "Rock Creek", "Rockbridge", "Rockford",
- "Rocky Ridge", "Rocky River", "Rogers", "Rome", "Rootstown", "Roseville",
- "Rosewood", "Ross", "Rossburg", "Rossford", "Roundhead", "Rudolph",
- "Rushsylvania", "Rushville", "Russells Point", "Russellville", "Russia",
- "Rutland", "Sabina", "Saint Clairsville", "Saint Henry", "Saint Johns",
- "Saint Louisville", "Saint Marys", "Saint Paris", "Salem", "Salesville",
- "Salineville", "Sandusky", "Sandyville", "Sarahsville", "Sardinia",
- "Sardis", "Savannah", "Scio", "Scioto Furnace", "Scott", "Scottown",
- "Seaman", "Sebring", "Sedalia", "Senecaville", "Seven Mile", "Seville",
- "Shade", "Shadyside", "Shandon", "Sharon Center", "Sharpsburg",
- "Shauck", "Shawnee", "Sheffield Lake", "Shelby", "Sherrodsville",
- "Sherwood", "Shiloh", "Short Creek", "Shreve", "Sidney", "Sinking Spring",
- "Smithfield", "Smithville", "Solon", "Somerdale", "Somerset",
- "Somerville", "South Bloomingville", "South Charleston", "South Lebanon",
- "South Point", "South Salem", "South Solon", "South Vienna",
- "South Webster", "Southington", "Sparta", "Spencer", "Spencerville",
- "Spring Valley", "Springboro", "Springfield", "Stafford", "Sterling",
- "Steubenville", "Stewart", "Stillwater", "Stockdale", "Stockport",
- "Stone Creek", "Stony Ridge", "Stout", "Stoutsville", "Stow", "Strasburg",
- "Stratton", "Streetsboro", "Strongsville", "Struthers", "Stryker",
- "Sugar Grove", "Sugarcreek", "Sullivan", "Sulphur Springs", "Summerfield",
- "Summit Station", "Summitville", "Sunbury", "Swanton", "Sycamore",
- "Sycamore Valley", "Sylvania", "Syracuse", "Tallmadge", "Tarlton",
- "Terrace Park", "The Plains", "Thompson", "Thornville", "Thurman",
- "Thurston", "Tiffin", "Tiltonsville", "Tipp City", "Tippecanoe", "Tiro",
- "Toledo", "Tontogany", "Torch", "Toronto", "Tremont City", "Trenton",
- "Trimble", "Trinway", "Troy", "Tuppers Plains", "Tuscarawas", "Twinsburg",
- "Uhrichsville", "Union City", "Union Furnace", "Unionport", "Uniontown",
- "Unionville", "Unionville Center", "Uniopolis", "Upper Sandusky", "Urbana",
- "Utica", "Valley City", "Van Buren", "Van Wert", "Vandalia", "Vanlue",
- "Vaughnsville", "Venedocia", "Vermilion", "Verona", "Versailles",
- "Vickery", "Vienna", "Vincent", "Vinton", "Wadsworth", "Wakefield",
- "Wakeman", "Walbridge", "Waldo", "Walhonding", "Walnut Creek", "Wapakoneta",
- "Warnock", "Warren", "Warsaw", "Washington Court House",
- "Washingtonville", "Waterford", "Waterloo", "Watertown", "Waterville",
- "Wauseon", "Waverly", "Wayland", "Wayne", "Waynesburg", "Waynesfield",
- "Waynesville", "Wellington", "Wellston", "Wellsville", "West Alexandria",
- "West Chester", "West Elkton", "West Farmington", "West Jefferson",
- "West Lafayette", "West Liberty", "West Manchester", "West Mansfield",
- "West Millgrove", "West Milton", "West Point", "West Portsmouth",
- "West Rushville", "West Salem", "West Union", "West Unity", "Westerville",
- "Westfield Center", "Westlake", "Weston", "Westville", "Wharton",
- "Wheelersburg", "Whipple", "White Cottage", "Whitehouse", "Wickliffe",
- "Wilberforce", "Wilkesville", "Willard", "Williamsburg", "Williamsfield",
- "Williamsport", "Williamstown", "Williston", "Willoughby", "Willow Wood",
- "Willshire", "Wilmington", "Wilmot", "Winchester", "Windham", "Windsor",
- "Winesburg", "Wingett Run", "Winona", "Wolf Run", "Woodsfield",
- "Woodstock", "Woodville", "Wooster", "Wren", "Xenia", "Yellow Springs",
- "Yorkshire", "Yorkville", "Youngstown", "Zaleski", "Zanesfield", "Zanesville",
- "Zoar"
- ];
- $('.bslink').tip();
- $("#suggest1").autocomplete(cities);
- </script>
相关demo下载
补充资料
demo程序中还少一个script.do文件,并且还需要在IIS中配置“.do”的应用程序扩展,方法如下:在IIS中选择所建的网站,右键单击“属性”如下图: